<?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>180294</bug_id>
          
          <creation_ts>2017-12-01 16:20:11 -0800</creation_ts>
          <short_desc>[Web App Manifest] Add SPI for fetching the manifest</short_desc>
          <delta_ts>2017-12-06 14:26:38 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Quesada">david_quesada</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1377140</commentid>
    <comment_count>0</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-01 16:20:11 -0800</bug_when>
    <thetext>Add SPI for embedders to fetch the associated manifest of the current document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377143</commentid>
    <comment_count>1</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-01 16:21:21 -0800</bug_when>
    <thetext>rdar://problem/34747968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377801</commentid>
    <comment_count>2</comment_count>
      <attachid>328369</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-04 11:59:06 -0800</bug_when>
    <thetext>Created attachment 328369
Patch v1

Patch for review. This builds on 180292, so it won&apos;t apply yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377958</commentid>
    <comment_count>3</comment_count>
      <attachid>328369</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-12-04 15:37:39 -0800</bug_when>
    <thetext>Comment on attachment 328369
Patch v1

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

r=me with comments

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4354
&gt; +    _page-&gt;getApplicationManifest([completion = makeBlockPtr(completionHandler)](const std::optional&lt;WebCore::ApplicationManifest&gt;&amp; manifest, WebKit::CallbackBase::Error error) {

You can just call this &quot;completionHandler&quot; as we do elsewhere, since the lambda creates a new lexical scope.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5323
&gt; +        // FIXME: Log error or assert.
&gt; +        // this can validly happen if a load invalidated the callback, though

This comment contradicts itself, so you should remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378215</commentid>
    <comment_count>4</comment_count>
      <attachid>328466</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-05 10:32:37 -0800</bug_when>
    <thetext>Created attachment 328466
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378369</commentid>
    <comment_count>5</comment_count>
      <attachid>328369</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-05 14:27:37 -0800</bug_when>
    <thetext>Comment on attachment 328369
Patch v1

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:40
&gt; +- (instancetype)initWithCoder:(NSCoder *)aDecoder
&gt; +{
&gt; +    [self release];

I&apos;ll admit to not being totally familiar with WebKit2&apos;s API objects, but this pattern strikes me as odd.

Could you use API::Object::constructInWrapper&lt;...&gt;? Does the wrapped object need to be destructed in a -dealloc to avoid leaks? My suspicion is that there can be leaks as written.

See _WKFrameHandle or _WKProcessPoolConfiguration for examples of the kinds of patterns I was expected to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378389</commentid>
    <comment_count>6</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-05 14:56:08 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #5)
&gt; Comment on attachment 328369 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328369&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:40
&gt; &gt; +- (instancetype)initWithCoder:(NSCoder *)aDecoder
&gt; &gt; +{
&gt; &gt; +    [self release];
&gt; 
&gt; I&apos;ll admit to not being totally familiar with WebKit2&apos;s API objects, but
&gt; this pattern strikes me as odd.
&gt; 
&gt; Could you use API::Object::constructInWrapper&lt;...&gt;? 

I&apos;ll try this.

&gt; Does the wrapped object
&gt; need to be destructed in a -dealloc to avoid leaks? My suspicion is that
&gt; there can be leaks as written.

I believe I do need a dealloc. I&apos;ll put up a new patch with this.
&gt; 
&gt; See _WKFrameHandle or _WKProcessPoolConfiguration for examples of the kinds
&gt; of patterns I was expected to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378468</commentid>
    <comment_count>7</comment_count>
      <attachid>328531</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-05 17:15:10 -0800</bug_when>
    <thetext>Created attachment 328531
Patch for landing (v2)

Rebased, addressed Joe&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378681</commentid>
    <comment_count>8</comment_count>
      <attachid>328590</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-06 10:54:37 -0800</bug_when>
    <thetext>Created attachment 328590
Patch for landing v3

Attempted to fix EWS errors when the feature is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378725</commentid>
    <comment_count>9</comment_count>
      <attachid>328590</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-06 11:56:10 -0800</bug_when>
    <thetext>Comment on attachment 328590
Patch for landing v3

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

Thanks for addressing the follow-up comments!

&gt; LayoutTests/applicationmanifest/multiple-links-expected.txt:8
&gt; +layer at (0,0) size 800x600
&gt; +  RenderView at (0,0) size 800x600
&gt; +layer at (0,0) size 800x600
&gt; +  RenderBlock {HTML} at (0,0) size 800x600
&gt; +    RenderBody {BODY} at (8,8) size 784x584

It is super weird to have Render Tree output on a test that doesn&apos;t need it.

You should be able to add `testRunner.dumpAsText()` to the test to avoid this unnecessary output (which you do up above with developer-warnings.html.

&gt; LayoutTests/applicationmanifest/multiple-links.html:8
&gt; +		testRunner.notifyDone();

Nit: Weird indent.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:38
&gt; +- (instancetype)initWithCoder:(NSCoder *)aDecoder

This reads much better to me now. Thanks!

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:130
&gt; +- (instancetype)initWithCoder:(NSCoder *)aDecoder
&gt; +{
&gt; +    UNUSED_PARAM(aDecoder);
&gt; +    return nil;
&gt; +}

I suppose technically this won&apos;t be reached, but it might need a [self release]?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378734</commentid>
    <comment_count>10</comment_count>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-06 12:11:04 -0800</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #9)
&gt; Comment on attachment 328590 [details]
&gt; Patch for landing v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328590&amp;action=review
&gt; 
&gt; Thanks for addressing the follow-up comments!
&gt; 
&gt; &gt; LayoutTests/applicationmanifest/multiple-links-expected.txt:8
&gt; &gt; +layer at (0,0) size 800x600
&gt; &gt; +  RenderView at (0,0) size 800x600
&gt; &gt; +layer at (0,0) size 800x600
&gt; &gt; +  RenderBlock {HTML} at (0,0) size 800x600
&gt; &gt; +    RenderBody {BODY} at (8,8) size 784x584
&gt; 
&gt; It is super weird to have Render Tree output on a test that doesn&apos;t need it.
&gt; 
&gt; You should be able to add `testRunner.dumpAsText()` to the test to avoid
&gt; this unnecessary output (which you do up above with developer-warnings.html.

Sure, I&apos;ll add the dumpAsText() call. I assume that won&apos;t stop dumpResourceLoadCallbacks() from printing the resource load callbacks?

&gt; 
&gt; &gt; LayoutTests/applicationmanifest/multiple-links.html:8
&gt; &gt; +		testRunner.notifyDone();
&gt; 
&gt; Nit: Weird indent.

Ugh. Tabs vs spaces! Will fix.
 
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:38
&gt; &gt; +- (instancetype)initWithCoder:(NSCoder *)aDecoder
&gt; 
&gt; This reads much better to me now. Thanks!
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKApplicationManifest.mm:130
&gt; &gt; +- (instancetype)initWithCoder:(NSCoder *)aDecoder
&gt; &gt; +{
&gt; &gt; +    UNUSED_PARAM(aDecoder);
&gt; &gt; +    return nil;
&gt; &gt; +}
&gt; 
&gt; I suppose technically this won&apos;t be reached, but it might need a [self
&gt; release]?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378748</commentid>
    <comment_count>11</comment_count>
      <attachid>328608</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-06 12:39:09 -0800</bug_when>
    <thetext>Created attachment 328608
Patch for landing v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378763</commentid>
    <comment_count>12</comment_count>
      <attachid>328608</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-06 13:14:25 -0800</bug_when>
    <thetext>Comment on attachment 328608
Patch for landing v4

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

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:1258
&gt; +#else
&gt; +        WKRetainPtr&lt;WKStringRef&gt; messageName = adoptWK(WKStringCreateWithUTF8CString(&quot;DidGetApplicationManifest&quot;));
&gt; +            WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
&gt; +#endif

Nit: Weird indent on 1257.

Last comment.

This strikes me as misleading. In the non __BLOCKS__ case, this does nothing. So if another port enables APPLICATION_MANIFEST the tests may pass (if they don&apos;t dump console messages or loader delegates), but they won&apos;t actually be doing anything?

I think we may want to put a FIXME here to add an API to actually get the application manifest if !__BLOCKS__. Perhaps even a compile time error (#error), to immediately tell developers they need a provide an API to get the manifest without block.

Otherwise a port enabling this feature might not know they they need to provide an API to get things working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378786</commentid>
    <comment_count>13</comment_count>
      <attachid>328619</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2017-12-06 13:53:57 -0800</bug_when>
    <thetext>Created attachment 328619
Patch for landing - v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378819</commentid>
    <comment_count>14</comment_count>
      <attachid>328619</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 14:26:37 -0800</bug_when>
    <thetext>Comment on attachment 328619
Patch for landing - v5

Clearing flags on attachment: 328619

Committed r225598: &lt;https://trac.webkit.org/changeset/225598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378820</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 14:26:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328369</attachid>
            <date>2017-12-04 11:59:06 -0800</date>
            <delta_ts>2017-12-06 10:54:37 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>3.patch</filename>
            <type>text/plain</type>
            <size>68561</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDZkNWNkYmM2ODE5OWI5MGE5YjdmNDY0NGViMDQ3NDY5Njk5YmRkYzQKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjA0OjU5IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3Ig
ZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjk0CiAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAogICAgCiAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAg
IFRlc3Q6IGFwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwKICAgIAog
ICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgog
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CiAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKToKICAgIAogICAgU291cmNlL1dlYktp
dDoKICAgIAogICAgQWRkIGEgbmV3IG1ldGhvZCAtW1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25N
YW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdIHRvIHJlcXVlc3QKICAgIHRoZSBtYW5pZmVz
dCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgcGFnZS4KICAgIAogICAgKiBTaGFyZWQvQVBJ
L0FQSU9iamVjdC5oOgogICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgogICAgKEFQSTo6
T2JqZWN0OjpuZXdPYmplY3QpOgogICAgKiBVSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFu
aWZlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1h
bmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KICAgICAgICBBZGQgYSBuZXcgQVBJIG9iamVj
dCB0eXBlIGZvciBhcHBsaWNhdGlvbiBtYW5pZmVzdHMuCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwOgogICAgKFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CiAgICAgICAg
QWRkIGEgQyB2ZXJzaW9uIG9mIHRoaXMgU1BJIGZvciBXZWJLaXRUZXN0UnVubmVyLgogICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbToKICAgICgtW1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdp
dGhDb21wbGV0aW9uSGFuZGxlcjpdKToKICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oLgogICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QubW06IEFkZGVkLgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5p
ZmVzdCBpbml0V2l0aENvZGVyOl0pOgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBlbmNv
ZGVXaXRoQ29kZXI6XSk6CiAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9u
TWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKICAgICgtW19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgX2FwaU9iamVjdF0pOgogICAgKG51bGxhYmxlTlNTdHJpbmcpOgog
ICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBuYW1lXSk6CiAgICAoLVtfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0IHNob3J0TmFtZV0pOgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBs
aWNhdGlvbkRlc2NyaXB0aW9uXSk6CiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IHNjb3Bl
XSk6CiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IHN0YXJ0VVJMXSk6CiAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlv
bk1hbmlmZXN0LmguCiAgICAoQVBJOjp3cmFwcGVyKToKICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CiAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RD
YWxsYmFjayk6CiAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZl
c3QpOgogICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CiAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CiAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgogICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdB
cHBsaWNhdGlvbk1hbmlmZXN0KToKICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CiAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CiAgICAKICAgIFRvb2xzOgogICAgCiAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgogICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW06IEFkZGVkLgog
ICAgICAgIEFkZGVkIHR3byBBUEkgdGVzdHMgZm9yIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q6CiAg
ICAgICAgLSBUZXN0aW5nIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QncyBjb25mb3JtYW5jZSB0byBO
U0NvZGluZy4KICAgICAgICAtIFRlc3RpbmcgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFu
aWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSwgdmVyaWZ5aW5nIHRoZQogICAgICAgICAgdmFs
dWVzIG9mIHRoZSByZXN1bHRpbmcgX1dLQXBwbGljYXRpb25NYW5pZmVzdC4KICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKICAgIAogICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgogICAgICAgIEFkZGVkIGEgbmV3IHRlc3RSdW5uZXIg
bWV0aG9kIGdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKCksIHVzZWQgYnkgdGhlIExheW91dFRl
c3RzCiAgICAgICAgdG8gcmVxdWVzdCB0aGUgZG9jdW1lbnQgbG9hZCBpdHMgYXNzb2NpYXRlZCBt
YW5pZmVzdC4gVGhlIGxheW91dCB0ZXN0cyBmb3JtZXJseSBjYWxsZWQKICAgICAgICBhbiB1bmlt
cGxlbWVudGVkIGZ1bmN0aW9uIGdldE1hbmlmZXN0VGhlbigpLCBidXQgSSBhZGRlZCAnQXBwbGlj
YXRpb24nIHRvIHNvbWV3aGF0CiAgICAgICAgZGlmZmVyZW50aWF0ZSB0aGlzIGZyb20gdGhlIGFw
cCBjYWNoZSBtYW5pZmVzdC4KICAgIAogICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZSk6CiAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CiAgICAoV1RSOjpUZXN0UnVubmVyOjpnZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0VGhlbik6CiAgICAoV1RSOjpUZXN0UnVubmVyOjpkaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KToKICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CiAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgogICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgogICAgCiAgICBMYXlvdXRUZXN0czoKICAgIAogICAgKiBUZXN0RXhwZWN0YXRpb25zOgogICAg
ICAgIFNraXAgdGhlIGFwcCBtYW5pZmVzdC1yZWxhdGVkIGxheW91dCB0ZXN0cyBmb3Igbm93IHdo
aWxlIHRoZSBmZWF0dXJlIGlzIHN0aWxsIGRpc2FibGVkLgogICAgICAgIEFsc28gbW92ZWQgdGhl
IGV4cGVjdGF0aW9ucyBkaXNhYmxpbmcgdGhlIG1hbmlmZXN0LXNyYyBsYXlvdXQgdGVzdHMgKHdo
aWNoIG5vdyBwYXNzCiAgICAgICAgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkKSB0byB0aGUg
c2FtZSBsb2NhdGlvbiBpbiB0aGUgZmlsZS4KICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9kZXZl
bG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICogYXBwbGljYXRpb25tYW5p
ZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbDogQWRkZWQuCiAgICAqIGFwcGxpY2F0aW9ubWFu
aWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogQWRkZWQuCiAgICAg
ICAgQWRkIGEgbGF5b3V0IHRlc3QgdG8gdmVyaWZ5IHRoYXQgd2FybmluZ3MgZ2VuZXJhdGVkIHdo
aWxlIHBhcnNpbmcgdGhlIG1hbmlmZXN0IGFyZQogICAgICAgIGxvZ2dlZCB0byB0aGUgY29uc29s
ZS4KICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZl
c3Qtc3JjLWFsbG93ZWQuaHRtbDoKICAgICAgICBSZXBsYWNlZCBjYWxscyB0byBnZXRNYW5pZmVz
dFRoZW4oKSB3aXRoIGdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKCkuCiAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4
cGVjdGVkLnR4dDoKICAgICAgICBVcGRhdGVkIHRoZSBleHBlY3RlZCBjb25zb2xlIG1lc3NhZ2Ug
dG8gcmVmbGVjdCB0aGUgY3VycmVudCB3b3JkaW5nIGZvciBDU1AgdmlvbGF0aW9ucy4KICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJs
b2NrZWQuaHRtbDoKICAgICAgICBSZXBsYWNlZCBjYWxscyB0byBnZXRNYW5pZmVzdFRoZW4oKSB3
aXRoIGdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKCkuCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYyODkwY2FmYzE5Li5h
ZTNlYmM0MDVkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE3LTEyLTAxICBEYXZpZCBRdWVz
YWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBcHAgTWFuaWZl
c3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVzdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjk0CisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzM0NzQ3OTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgU2tpcCB0aGUgYXBwIG1hbmlm
ZXN0LXJlbGF0ZWQgbGF5b3V0IHRlc3RzIGZvciBub3cgd2hpbGUgdGhlIGZlYXR1cmUgaXMgc3Rp
bGwgZGlzYWJsZWQuCisgICAgICAgICAgICBBbHNvIG1vdmVkIHRoZSBleHBlY3RhdGlvbnMgZGlz
YWJsaW5nIHRoZSBtYW5pZmVzdC1zcmMgbGF5b3V0IHRlc3RzICh3aGljaCBub3cgcGFzcworICAg
ICAgICAgICAgd2hlbiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkKSB0byB0aGUgc2FtZSBsb2NhdGlv
biBpbiB0aGUgZmlsZS4KKyAgICAgICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13
YXJuaW5ncy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZl
c3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGFwcGxpY2F0aW9u
bWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogQWRkZWQuCisg
ICAgICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3YXJuaW5ncyBnZW5l
cmF0ZWQgd2hpbGUgcGFyc2luZyB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgICAgICBsb2dnZWQg
dG8gdGhlIGNvbnNvbGUuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbDoKKyAgICAgICAgICAgIFJlcGxh
Y2VkIGNhbGxzIHRvIGdldE1hbmlmZXN0VGhlbigpIHdpdGggZ2V0QXBwbGljYXRpb25NYW5pZmVz
dFRoZW4oKS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICBVcGRh
dGVkIHRoZSBleHBlY3RlZCBjb25zb2xlIG1lc3NhZ2UgdG8gcmVmbGVjdCB0aGUgY3VycmVudCB3
b3JkaW5nIGZvciBDU1AgdmlvbGF0aW9ucy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sOgorICAgICAg
ICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNh
dGlvbk1hbmlmZXN0VGhlbigpLgorCiAyMDE3LTEyLTA0ICBNczJnZXIgIDxNczJnZXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBSZWJhc2VsaW5lIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1l
bGVtZW50L2RpYWxvZy1zaG93TW9kYWwuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMGFlZTZl
NzE4YWYuLjE3ZGEyZDRjNDI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEwODcsOCArMTA4Nyw2
IEBAIHdlYmtpdC5vcmcvYi8xMTE4NjkgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvZXZhbC1ibG9ja2VkLWFuZC1zCiB3ZWJraXQub3JnL2IvMTUzMTQ4IGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2V2YWwtYWxsb3dlZC1pbi1yZXBvcnQt
b25seS1tb2RlLWFuZC1zZW5kcy1yZXBvcnQucGhwCiB3ZWJraXQub3JnL2IvMTUzMTUwIGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9jaGlsZC1zcmMvZnJhbWUt
ZmlyZXMtbG9hZC1ldmVudC13aGVuLWJsb2NrZWQuaHRtbAogd2Via2l0Lm9yZy9iLzE1MzE1MCBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvY2hpbGQtc3JjL2Zy
YW1lLWZpcmVzLWxvYWQtZXZlbnQtd2hlbi1yZWRpcmVjdC1ibG9ja2VkLmh0bWwKLXdlYmtpdC5v
cmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFu
aWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCAjIE5lZWRzIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVu
KCkKLXdlYmtpdC5vcmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbCAjIE5lZWRzIHRlc3RSdW5uZXIuZ2V0
TWFuaWZlc3RUaGVuKCkKIHdlYmtpdC5vcmcvYi8xNTMxNTUgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmFzaWMtYmxvY2tlZC1lcnJvci1l
dmVudC5odG1sCiB3ZWJraXQub3JnL2IvMTUzMTU1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtYmFzaWMtYmxvY2tlZC1lcnJvci1ldmVudC5o
dG1sCiB3ZWJraXQub3JnL2IvMTUzMTU1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtc3ZnLXN0eWxlLWJhc2ljLWJsb2NrZWQtZXJyb3ItZXZl
bnQuaHRtbApAQCAtMTYyNywzICsxNjI1LDkgQEAgd2Via2l0Lm9yZy9iLzE3OTI4NyBodHRwL3dw
dC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGlvblRpbWVsaW5lL2RvY3VtZW4KIHdl
YmtpdC5vcmcvYi8xNzkyODcgaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2Fu
aW1hdGlvbnMvc2V0LXRoZS1hbmltYXRpb24tc3RhcnQtdGltZS5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAogd2Via2l0Lm9yZy9iLzE3NzQ0MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvb3JpZ2luL3JlbGF4aW5nLXRoZS1zYW1lLW9yaWdpbi1yZXN0cmljdGlv
bi9kb2N1bWVudF9kb21haW5fc2V0dGVyX251bGwudGVudGF0aXZlLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQorCisjIEFwcGxpY2F0aW9uIE1hbmlmZXN0IHRlc3RzCit3ZWJraXQub3JnL2IvMTUzMTUy
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1h
bGxvd2VkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzE1ODIwNSBhcHBsaWNhdGlvbm1hbmlmZXN0LyBbIFNraXAgXQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13
YXJuaW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2Rl
dmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjYzMzY4ZGM0MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBUaGUgInN0YXJ0X3VybCIgYXBwbGljYXRpb24g
bWFuaWZlc3QgcHJvcGVydHkgaXMgbm90IGEgdmFsaWQgVVJMLgorQ09OU09MRSBNRVNTQUdFOiBU
aGUgIm5hbWUiIGFwcGxpY2F0aW9uIG1hbmlmZXN0IHByb3BlcnR5IGlzIG5vdCBhIHN0cmluZy4K
K0NPTlNPTEUgTUVTU0FHRTogVGhlIHNjb3BlJ3Mgb3JpZ2luIG9mICJodHRwOi8vY29tcGxldGVs
eWRpZmZlcmVudHdlYnNpdGUuY29tIiBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZG9jdW1lbnQncyBv
cmlnaW4gb2YgIiIuCitBTEVSVDogUGFzcworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBs
aWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sIGIvTGF5b3V0VGVzdHMvYXBw
bGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2U1YmM3N2JmNmMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sCkBA
IC0wLDAgKzEsMTEgQEAKKzxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9InJlc291cmNlcy9kZXZl
bG9wZXItd2FybmluZ3MubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oZnVu
Y3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJQYXNzIik7CisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgIH0pOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZlbG9wZXItd2FybmluZ3MubWFuaWZl
c3QgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZlbG9wZXIt
d2FybmluZ3MubWFuaWZlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LmFmOTJhYTI4OTA1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25t
YW5pZmVzdC9yZXNvdXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0CkBAIC0wLDAgKzEs
NSBAQAoreworICAgICJuYW1lIjogMCwKKyAgICAic3RhcnRfdXJsIjogImh0dHA6PyIsCisgICAg
InNjb3BlIjogImh0dHA6Ly9jb21wbGV0ZWx5ZGlmZmVyZW50d2Vic2l0ZS5jb20iCit9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbApp
bmRleCBkZGJkNDdkMjdlMi4uZWY1ZTEwYWVkYjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxv
d2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbApAQCAtNCw3ICs0LDcgQEAKICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVu
bmVyLmdldE1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5nZXRB
cHBsaWNhdGlvbk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFsZXJ0KCJQ
YXNzIik7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMt
YmxvY2tlZC1leHBlY3RlZC50eHQKaW5kZXggNzA2Yjg4NWM2NTYuLjJmNjUxYzZkOGVjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJs
b2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBSZWZ1
c2VkIHRvIGxvYWQgbWFuaWZlc3QgZnJvbSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24nIGJlY2F1
c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJl
Y3RpdmU6ICJtYW5pZmVzdC1zcmMgJ25vbmUnIi4KLQorQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2Vk
IHRvIGxvYWQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24gYmVjYXVzZSBpdCBkb2VzIG5vdCBhcHBl
YXIgaW4gdGhlIG1hbmlmZXN0LXNyYyBkaXJlY3RpdmUgb2YgdGhlIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5LgogQUxFUlQ6IFBhc3MKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWwKaW5kZXggYTdkZjcxNDZiZjQuLmNkNGQxZjdiODk3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9j
a2VkLmh0bWwKQEAgLTQsNyArNCw3IEBACiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5nZXRNYW5pZmVzdFRoZW4oZnVuY3Rpb24o
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICBhbGVydCgiUGFzcyIpOwogICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNjZTJiYWQxZThhLi5h
NGMzYTg0ZTMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTEyLTAxICBEYXZp
ZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBcHAg
TWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjk0CisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzM0NzQ3OTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdDogYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3Mu
aHRtbAorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9u
TWFuaWZlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpkZWNvZGUp
OgorCiAyMDE3LTExLTE3ICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIFN1cHBvcnQgZmV0Y2hpbmcgdGhlIGFwcCBt
YW5pZmVzdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCmluZGV4IGVmOTYyNjkwOTY3
Li5jNzBlN2U2MGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogCiAjaW5jbHVkZSAi
VVJMLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzcsOCArMzgsMzYgQEAgc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3QgewogICAgIFN0
cmluZyBkZXNjcmlwdGlvbjsKICAgICBVUkwgc2NvcGU7CiAgICAgVVJMIHN0YXJ0VVJMOworCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG5hbWUgPDwgc2hvcnROYW1lIDw8IGRlc2NyaXB0aW9u
IDw8IHNjb3BlIDw8IHN0YXJ0VVJMOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBBcHBsaWNhdGlvbk1hbmlmZXN0OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBBcHBsaWNhdGlvbk1hbmlmZXN0IHJlc3VsdDsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5hbWUpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNob3J0TmFtZSkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuZGVzY3JpcHRpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNjb3BlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdGFydFVSTCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDYzY2Y3MWU1ZDk3Li5kYTdjYWZhNTZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1NSBAQAorMjAxNy0xMi0wMSAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0
aGUgbWFuaWZlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDI5NAorICAgICAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBtZXRob2QgLVtX
S1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSB0
byByZXF1ZXN0CisgICAgICAgIHRoZSBtYW5pZmVzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJl
bnQgcGFnZS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICog
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmpl
Y3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdC5oLgorICAgICAgICAgICAgQWRkIGEgbmV3IEFQSSBvYmplY3QgdHlw
ZSBmb3IgYXBwbGljYXRpb24gbWFuaWZlc3RzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKToKKyAg
ICAgICAgICAgIEFkZCBhIEMgdmVyc2lvbiBvZiB0aGlzIFNQSSBmb3IgV2ViS2l0VGVzdFJ1bm5l
ci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlm
ZXN0LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBpbml0V2l0
aENvZGVyOl0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGVuY29kZVdpdGhD
b2RlcjpdKToKKyAgICAgICAgKCtbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbk1h
bmlmZXN0RnJvbUpTT046bWFuaWZlc3RVUkw6ZG9jdW1lbnRVUkw6XSk6CisgICAgICAgICgtW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgX2FwaU9iamVjdF0pOgorICAgICAgICAobnVsbGFibGVOU1N0
cmluZyk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgbmFtZV0pOgorICAgICAg
ICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IHNob3J0TmFtZV0pOgorICAgICAgICAoLVtfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uRGVzY3JpcHRpb25dKToKKyAgICAgICAgKC1b
X1dLQXBwbGljYXRpb25NYW5pZmVzdCBzY29wZV0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0IHN0YXJ0VVJMXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KKyAgICAg
ICAgKEFQSTo6d3JhcHBlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25NYW5pZmVzdENhbGxi
YWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMS0xNiAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1
ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNsYXNzIGZvciBwYXJzaW5nIGFwcGxp
Y2F0aW9uIG1hbmlmZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGYw
NzQxNGM4N2E5Li43NTU3MmE2ZGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aApAQCAtOTcsNiArOTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBVSVByb2Nl
c3MgdHlwZXMKICAgICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIsCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorICAgICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0LAorI2VuZGlm
CiAgICAgICAgIEF0dGFjaG1lbnQsCiAgICAgICAgIEF1dG9tYXRpb25TZXNzaW9uLAogICAgICAg
ICBCYWNrRm9yd2FyZExpc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
aW5kZXggZGZiYTlmZDk0ZjEuLmM3NWIyMzE0NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tCkBAIC04MSw2ICs4MSwxMCBAQAogI2ltcG9ydCAiX1dLVXNlclN0eWxl
U2hlZXRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgi
CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW1wb3J0ICJfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1p
bmltdW1PYmplY3RBbGlnbm1lbnQgPSA4Owogc3RhdGljX2Fzc2VydChtaW5pbXVtT2JqZWN0QWxp
Z25tZW50ID49IGFsaWdub2Yodm9pZCopLCAiT2JqZWN0cyBzaG91bGQgYWx3YXlzIGJlIGF0IGxl
YXN0IHBvaW50ZXItYWxpZ25lZC4iKTsKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bUV4dHJh
U3BhY2VGb3JBbGlnbm1lbnQgPSBtaW5pbXVtT2JqZWN0QWxpZ25tZW50IC0gYWxpZ25vZih2b2lk
Kik7CkBAIC0xMTksNiArMTIzLDEyIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBz
aXplLCBUeXBlIHR5cGUpCiAgICAgLy8gQVBJOjpPYmplY3QsIHNvIHRoZXkgYXJlIGFsbG9jYXRl
ZCB1c2luZyArYWxsb2MuCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKKyNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCisgICAgY2FzZSBUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAg
ICAgICB3cmFwcGVyID0gW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYWxsb2NdOworICAgICAgICBi
cmVhazsKKyNlbmRpZgorCiAgICAgY2FzZSBUeXBlOjpBcnJheToKICAgICAgICAgd3JhcHBlciA9
IFtXS05TQXJyYXkgYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lZjJjMTY2ZTliZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisKK25h
bWVzcGFjZSBBUEkgeworCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorY2xhc3Mg
QXBwbGljYXRpb25NYW5pZmVzdCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlw
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGlj
YXRpb25NYW5pZmVzdD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Qm
IGFwcGxpY2F0aW9uTWFuaWZlc3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBcHBsaWNhdGlvbk1hbmlmZXN0KGFwcGxpY2F0aW9uTWFuaWZlc3QpKTsKKyAgICB9CisgICAg
Y29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdCYgYXBwbGljYXRpb25NYW5pZmVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25NYW5pZmVzdDsgfQorCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IEFwcGxpY2F0aW9uTWFuaWZlc3QoY29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdCYgYXBwbGljYXRpb25NYW5pZmVzdCkKKyAgICAgICAgOiBtX2FwcGxpY2F0aW9uTWFu
aWZlc3QoYXBwbGljYXRpb25NYW5pZmVzdCkKKyAgICB7CisgICAgfQorICAgIFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3QgbV9hcHBsaWNhdGlvbk1hbmlmZXN0OworfTsKKyNlbmRpZgorCit9
IC8vIG5hbWVzcGFjZSBBUEkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKaW5kZXggZjIyNDRkNzQzNzQuLjMyZTRmNGFmZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI3NjAsMyArMjc2MCwxNyBAQCBQcm9jZXNzSUQgV0tQ
YWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2UpCiB7CiAgICAgcmV0dXJuIHRv
SW1wbChwYWdlKS0+cHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KKworI2lmZGVmIF9fQkxPQ0tTX18K
K3ZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdLUGFnZVJlZiBwYWdlLCBXS1Bh
Z2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0QmxvY2sgYmxvY2spCit7CisjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQorICAgIHRvSW1wbChwYWdlKS0+Z2V0QXBwbGljYXRpb25NYW5pZmVz
dChbYmxvY2tdKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dD4gJm1hbmlmZXN0LCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAgIGJsb2NrKCk7Cisg
ICAgfSk7CisjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgVU5VU0VE
X1BBUkFNKHBhZ2UpOworICAgIGJsb2NrKCk7CisjZW5kaWYgLy8gbm90IEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlUHJpdmF0ZS5oCmluZGV4IDBkZjgzNjQ4OTRlLi5iYjI2ZGU4YWJmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaApAQCAtMTc4LDYg
KzE3OCwxMSBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRJZ25vcmVzVmlld3BvcnRTY2FsZUxp
bWl0cyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBpZ25vcmVzVgogCiBXS19FWFBPUlQgV0tQcm9jZXNz
SUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2UpOwogCisjaWZkZWYg
X19CTE9DS1NfXwordHlwZWRlZiB2b2lkICheV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJs
b2NrKSh2b2lkKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3Rf
YihXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2Nr
KTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNWU0MTZjZDhiZDgu
LjU5ZWNiMmM2OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTExNyw2ICsxMTcsMTAgQEAKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2lu
L2R5bGRTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbXBvcnQgIl9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJ
bnRlcm5hbC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAjaW1wb3J0
ICJXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCIKICNlbmRpZgpAQCAtNDM0NCw2ICs0MzQ4
LDI1IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzQXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TU3RyaW5nICosIE5TRXJyb3IKICAgICB9KTsKIH0KIAorLSAodm9pZClfZ2V0
QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dLQXBw
bGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKKyAgICBfcGFnZS0+Z2V0QXBwbGljYXRpb25NYW5pZmVzdChbY29t
cGxldGlvbiA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0LCBXZWJLaXQ6OkNh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgVU5VU0VEKGVycm9yKTsKKyAgICAg
ICAgaWYgKGNvbXBsZXRpb24pIHsKKyAgICAgICAgICAgIGlmIChtYW5pZmVzdCkgeworICAgICAg
ICAgICAgICAgIGF1dG8gYXBpTWFuaWZlc3QgPSBBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNy
ZWF0ZSgqbWFuaWZlc3QpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb24od3JhcHBlcihhcGlN
YW5pZmVzdCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY29tcGxldGlv
bihuaWwpOworICAgICAgICB9CisgICAgfSk7CisjZWxzZQorICAgIGlmIChjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCiAtIChf
V0tQYWdpbmF0aW9uTW9kZSlfcGFnaW5hdGlvbk1vZGUKIHsKICAgICBzd2l0Y2ggKF9wYWdlLT5w
YWdpbmF0aW9uTW9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA5NjZmYjliYTE5Yi4uNTdkODIyZjc5NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaApAQCAtOTYsNiArOTYsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2Vy
LCBfV0tSZWN0RWRnZSkgewogI2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZTsKK0BjbGFzcyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxl
OwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CiBAY2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0
ZTsKQEAgLTMwNyw2ICszMDgsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tS
ZWN0RWRnZSkgewogLSAodm9pZClfZ2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAo
dm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAKKy0gKHZvaWQpX2dldEFwcGxpY2F0aW9uTWFu
aWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFBhZ2luYXRpb25Nb2RlOikgX1dLUGFnaW5hdGlvbk1vZGUgX3BhZ2luYXRpb25Nb2RlOwogLy8g
V2hldGhlciB0aGUgY29sdW1uLWJyZWFrLXtiZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMgYXJlIHJl
c3BlY3RlZCBpbnN0ZWFkIG9mIHRoZQogLy8gcGFnZS1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9w
ZXJ0aWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjYxYzUwZjJiZTEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtMCwwICsxLDUx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgOiBOU09iamVjdCA8TlNDb2Rpbmc+CisKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpuYW1lOworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnNob3J0
TmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5T
U3RyaW5nICphcHBsaWNhdGlvbkRlc2NyaXB0aW9uOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNVUkwgKnNjb3BlOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqc3RhcnRVUkw7CisKKysgKF9XS0FwcGxpY2F0aW9u
TWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBt
YW5pZmVzdFVSTDooTlNVUkwgKiltYW5pZmVzdFVSTCBkb2N1bWVudFVSTDoobnVsbGFibGUgTlNV
UkwgKilkb2N1bWVudFVSTDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45OTJjZWE0NmQ1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0
Lm1tCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmg+CisKK0BpbXBsZW1lbnRhdGlv
biBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIK
K3sKKyAgICBbc2VsZiByZWxlYXNlXTsKKworICAgIE5TU3RyaW5nICpuYW1lID0gW2FEZWNvZGVy
IGRlY29kZU9iamVjdEZvcktleTpAIm5hbWUiXTsKKyAgICBOU1N0cmluZyAqc2hvcnROYW1lID0g
W2FEZWNvZGVyIGRlY29kZU9iamVjdEZvcktleTpAInNob3J0X25hbWUiXTsKKyAgICBOU1N0cmlu
ZyAqZGVzY3JpcHRpb24gPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAiZGVzY3JpcHRp
b24iXTsKKyAgICBOU1VSTCAqc2NvcGVVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5
OkAic2NvcGUiXTsKKyAgICBOU1VSTCAqc3RhcnRVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0
Rm9yS2V5OkAic3RhcnRfdXJsIl07CisKKyAgICBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
IGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0IHsKKyAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCisg
ICAgICAgIFdURjo6U3RyaW5nKHNob3J0TmFtZSksCisgICAgICAgIFdURjo6U3RyaW5nKGRlc2Ny
aXB0aW9uKSwKKyAgICAgICAgV2ViQ29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgV2ViQ29y
ZTo6VVJMKHN0YXJ0VVJMKQorICAgIH07CisKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmNyZWF0ZShjb3JlQXBwbGljYXRpb25NYW5pZmVzdCkubGVha1JlZigp
KTsKK30KKworLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5TQ29kZXIgKilhQ29kZXIKK3sKKyAg
ICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLm5hbWUgZm9yS2V5OkAibmFtZSJdOworICAgIFth
Q29kZXIgZW5jb2RlT2JqZWN0OnNlbGYuc2hvcnROYW1lIGZvcktleTpAInNob3J0X25hbWUiXTsK
KyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLmFwcGxpY2F0aW9uRGVzY3JpcHRpb24gZm9y
S2V5OkAiZGVzY3JpcHRpb24iXTsKKyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLnNjb3Bl
IGZvcktleTpAInNjb3BlIl07CisgICAgW2FDb2RlciBlbmNvZGVPYmplY3Q6c2VsZi5zdGFydFVS
TCBmb3JLZXk6QCJzdGFydF91cmwiXTsKK30KKworKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAq
KWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJM
OihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJMCit7
CisgICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6
OnBhcnNlKFdURjo6U3RyaW5nKGpzb24pLCBXZWJDb3JlOjpVUkwobWFuaWZlc3RVUkwpLCBXZWJD
b3JlOjpVUkwoZG9jdW1lbnRVUkwpKTsKKyAgICByZXR1cm4gW0FQSTo6d3JhcHBlcihBUEk6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0ZShtYW5pZmVzdCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07Cit9CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfYXBw
bGljYXRpb25NYW5pZmVzdDsKK30KKworc3RhdGljIE5TU3RyaW5nICpudWxsYWJsZU5TU3RyaW5n
KGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5pc051bGwo
KSA/IG5pbCA6IChOU1N0cmluZyAqKXN0cmluZzsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7
CisgICAgcmV0dXJuIG51bGxhYmxlTlNTdHJpbmcoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxp
Y2F0aW9uTWFuaWZlc3QoKS5uYW1lKTsKK30KKworLSAoTlNTdHJpbmcgKilzaG9ydE5hbWUKK3sK
KyAgICByZXR1cm4gbnVsbGFibGVOU1N0cmluZyhfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGlj
YXRpb25NYW5pZmVzdCgpLnNob3J0TmFtZSk7Cit9CisKKy0gKE5TU3RyaW5nICopYXBwbGljYXRp
b25EZXNjcmlwdGlvbgoreworICAgIHJldHVybiBudWxsYWJsZU5TU3RyaW5nKF9hcHBsaWNhdGlv
bk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkuZGVzY3JpcHRpb24pOworfQorCistIChO
U1VSTCAqKXNjb3BlCit7CisgICAgcmV0dXJuIF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNh
dGlvbk1hbmlmZXN0KCkuc2NvcGU7Cit9CisKKy0gKE5TVVJMICopc3RhcnRVUkwKK3sKKyAgICBy
ZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5zdGFydFVS
TDsKK30KKworI2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisrIChfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmlu
ZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5T
VVJMICopZG9jdW1lbnRVUkwKK3sKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWFEZWNvZGVyCit7
CisgICAgVU5VU0VEKGFEZWNvZGVyKTsKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKWVu
Y29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgoreworICAgIFVOVVNFRChhQ29kZXIpOwor
fQorCistIChOU1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1N0
cmluZyAqKXNob3J0TmFtZQoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICop
YXBwbGljYXRpb25EZXNjcmlwdGlvbgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TVVJM
ICopc2NvcGUKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1VSTCAqKXN0YXJ0VVJMCit7
CisgICAgcmV0dXJuIG5pbDsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMmI4Nzg4NmMxNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmgKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3Vu
ZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElBcHBsaWNhdGlv
bk1hbmlmZXN0LmgiCisjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW1wb3J0
IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
c3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7Cit9CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCituYW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgKndyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0
KQoreworICAgIEFTU0VSVChbYXBwbGljYXRpb25NYW5pZmVzdC53cmFwcGVyKCkgaXNLaW5kT2ZD
bGFzczpbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0LndyYXBwZXIoKTsKK30KKwor
fQorCitAaW50ZXJmYWNlIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKCkgPFdLT2JqZWN0PiB7CitA
cGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
IF9hcHBsaWNhdGlvbk1hbmlmZXN0OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOTk0N2UwMjliNzkuLmMyMTYzNGVi
ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUzMTQs
NiArNTMxNCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29u
c3QgRWRpdGluZ1JhbmdlJiByYW5nZSwgQ2FsbGJhY2tJRCBjYQogICAgIGNhbGxiYWNrLT5wZXJm
b3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmFuZ2UpOwogfQogCisjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQordm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RD
YWxsYmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
JiBtYW5pZmVzdE9yTnVsbCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjaz4oY2Fs
bGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykgeworICAgICAgICAvLyBGSVhNRTogTG9nIGVy
cm9yIG9yIGFzc2VydC4KKyAgICAgICAgLy8gdGhpcyBjYW4gdmFsaWRseSBoYXBwZW4gaWYgYSBs
b2FkIGludmFsaWRhdGVkIHRoZSBjYWxsYmFjaywgdGhvdWdoCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKG1hbmlm
ZXN0T3JOdWxsKTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IE1hY2hTZW5kUmlnaHQmIHNlbmRS
aWdodCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewpAQCAtNzIyNSw0ICs3MjM5LDE4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRp
b25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
c3RkOjpudWxsb3B0LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOworICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFk
ZChjYWxsYmFja0lEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMjkzODg5ZmNmMzIuLjNlYmYyMWZhN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1Nyw2ICsxNTcsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlvbkJ1YmJsZTsKIAorc3RydWN0
IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CiBzdHJ1Y3QgRGljdGlvbmFyeVBvcHVwSW5mbzsKIHN0cnVj
dCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CkBAIC0yNjUs
NiArMjY2LDEwIEBAIHN0cnVjdCBRdWV1ZWRUb3VjaEV2ZW50cyB7CiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90PiBWYWxpZGF0ZUNvbW1hbmRDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBFZGl0aW5nUmFuZ2UmPiBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjazsKIAorI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mPiBBcHBsaWNh
dGlvbk1hbmlmZXN0Q2FsbGJhY2s7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5n
UmFuZ2UmPiBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjazsKIHR5cGVk
ZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm9vbD4gRm9udEF0U2Vs
ZWN0aW9uQ2FsbGJhY2s7CkBAIC0xMjQyLDYgKzEyNDcsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3
Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0ZpbGVuYW1lLCBGdW5jdGlv
bjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5j
dGlvbjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJ
RCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CkBAIC0xNTAyLDYgKzE1MTEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRh
dGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENhbGxiYWNrSUQpOwogICAgIHZv
aWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tJRCk7
CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHZvaWQgYXBwbGljYXRpb25N
YW5pZmVzdENhbGxiYWNrKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdD4mLCBDYWxsYmFja0lEKTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQm
LCBDYWxsYmFja0lEKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDFlZmE1ZmNlZmUyLi4zZGI1OTNmZWRiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTY3LDYgKzE2Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRWRpdGlu
Z1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJhbmdlLCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVbnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90IHJl
c3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgUmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCByZWN0LCBzdHJ1Y3QgV2ViS2l0OjpFZGl0
aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBBcHBsaWNhdGlvbk1hbmlmZXN0Q2Fs
bGJhY2soc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVz
dCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKICNpZiBQTEFURk9STShN
QUMpCiAgICAgQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soc3RydWN0
IFdlYktpdDo6QXR0cmlidXRlZFN0cmluZyBzdHJpbmcsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdS
YW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgRm9u
dEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJv
b2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDA2NDVlN2QzNmNhLi5kNzMwOWY2MDFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI4LDYgKzEyMjgsMTAgQEAKIAkJNUNF
ODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGlu
Z0xvYWQuaCAqLzsgfTsKIAkJNUNGRUNCMDQxRTFFRDFDQzAwRjg4NTA0IC8qIExlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyog
U2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNjMx
MDhGOTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk0MUY5NjcxOUMw
MEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjMxMDhGOTcxRjk2NzE5QzAwQTBEQjg0IC8q
IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRp
b25NYW5pZmVzdC5tbSAqLzsgfTsKKwkJNjMxMDhGOTkxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovOyB9OworCQk2MzQ4NDI1MTFGQjI2RTcxMDA5NDZFM0Mg
LyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0
aW9uTWFuaWZlc3QuaCAqLzsgfTsKIAkJNjM2MzUzQTUxRTk4NThERjAwMDlGOEFGIC8qIF9XS0dl
b2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5MUU5NzBENjUwMDMwMTFENSAvKiBfV0tHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjNDMzJDMjUxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dl
b2xvY2F0aW9uUG9zaXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2M0MzMkMyMzFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3Np
dGlvbi5tbSAqLzsgfTsKIAkJNjNDMzJDMjYxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0
aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2MTgs
NiArMzYyMiwxMCBAQAogCQk1RDQ0MkE1NTE2RDU4NTY3MDBBQzMzMzEgLyogUGx1Z2luU2Vydmlj
ZS5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9IFBsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzNGMTExNkZGOTBDMDBFRTUzOTYgLyogQmFz
ZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlVGFy
Z2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MTdBNTJENzFGNDNB
OUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTYzMTA4Rjk0MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjMxMDhGOTUxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzEwOEY5ODFGOTY3MUY3MDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTYzQzMyQzIzMUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBv
c2l0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjNDMzJD
MjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2M0MzMkMyNzFFOTgxMTkwMDA2OTlCRDAgLyogX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTc5NSw2ICs1ODAzLDkgQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4
MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJGOTM3
MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUx
OEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywK
KwkJCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5o
ICovLAorCQkJCTYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0Lm1tICovLAorCQkJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaCAqLywKIAkJCQlGNDQyOTE5MTFGQTU5MTA3MDAyQ0M5M0UgLyog
X1dLQXR0YWNobWVudC5oICovLAogCQkJCUY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tB
dHRhY2htZW50Lm1tICovLAogCQkJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRh
Y2htZW50SW50ZXJuYWwuaCAqLywKQEAgLTcxOTUsNiArNzIwNiw3IEBACiAJCQkJMzdDNEMwODMx
ODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1MDEzMTE3NjVGNDUwMDc1NzU3
MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJ
CQk2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oICov
LAogCQkJCTJFNUM3NzBEMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLywK
IAkJCQkyRTVDNzcwQzFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5oICovLAogCQkJ
CTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCkBA
IC04NDYyLDYgKzg0NzQsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTQxOEJCRjkzRjAw
MEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzlBODczNjE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjMxMDhGOTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTYzMTA4Rjk5MUY5NjcxRjcw
MEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyog
X1dLQXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTg1MzcsNiArODU1MSw3
IEBACiAJCQkJQTE5REQzQzAxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1h
dHRlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTgyRDVCNTFCRTZCRDI1MDA4N0E3
Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENzkyRDgxNzY3
Q0NBMzAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2
MzQ4NDI1MTFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2NDY5NzAxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRTVDNzcwRTFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDODFENUQxQzIxRjM4QjAwNUM0QzgyIC8qIEFQSUF1
dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxMTAsNiArMTAxMjUsNyBAQAog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTM3QTVF
MDEzMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTYzMTA4Rjk3MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0MjkxOTQxRkE1OTMxMTAwMkNDOTNFIC8q
IF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTBEMjhCMjFDNjUyMDk0MDA5
ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk5OTc4
OEFDQzFGNDIxREUyMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3
ODY2YTc3ZTgzMi4uYWIwYTU2YmU0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtMTg0MCw0ICsxODQwLDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBTaGFyCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxs
YmFja0lkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdD4mIG1hbmlmZXN0KQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJQYWdl
LT5kaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIs
IG1hbmlmZXN0KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA1
YTIyZjBkNzY2YS4uMjkwZDFiYmVkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0yNjIsNiArMjYyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJ
Y29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+
PiYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOwogCisjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRp
b25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpIGZpbmFsOworI2VuZGlmCisKICAgICBXZWJGcmFtZSogbV9mcmFtZTsK
ICAgICBSZWZQdHI8UGx1Z2luVmlldz4gbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50
UmVzcG9uc2VUb1BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDMwMjI5YmEzYTRjLi41MjcxNGQyZTI5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU4ODcsNCArNTg4Nywz
MiBAQCBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQYWdlOjphdHRhY2htZW50RWxl
bWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cgogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK3ZvaWQgV2Vi
UGFnZTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7Cisg
ICAgQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICBEb2N1bWVudCogbWFpbkZyYW1l
RG9jdW1lbnQgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IG1haW5GcmFtZURvY3VtZW50ID8gbWFpbkZyYW1lRG9jdW1l
bnQtPmxvYWRlcigpIDogbnVsbHB0cjsKKworICAgIGlmICghbG9hZGVyKSB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKHN0
ZDo6bnVsbG9wdCwgY2FsbGJhY2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBjb3JlQ2FsbGJhY2tJRCA9IGxvYWRlci0+bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsK
KyAgICBpZiAoIWNvcmVDYWxsYmFja0lEKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgY2FsbGJh
Y2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0RmV0Y2hDYWxsYmFja01hcC5hZGQoY29yZUNhbGxiYWNrSUQsIGNhbGxiYWNrSUQudG9JbnRl
Z2VyKCkpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1h
bmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxsYmFja0lELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3sKKyAgICBhdXRvIGNhbGxiYWNr
SUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENh
bGxiYWNrTWFwLnRha2UoY29yZUNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhtYW5pZmVzdCwgY2FsbGJhY2tJ
RCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggMzUwNWM4YWFmMjIuLjMwODU2ZDQ4OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04Nyw2ICs4NywxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSA8V2Vi
S2l0QWRkaXRpb25zL1BsYXRmb3JtVG91Y2hFdmVudElPUy5oPgogI2VsaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKQEAgLTEwMzAsNiArMTAzNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRh
Y2htZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0NvbnRlbnRUeXBl
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIENhbGxiYWNrSUQpOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgdm9pZCBnZXRBcHBsaWNh
dGlvbk1hbmlmZXN0KENhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FwcGxp
Y2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdD4mKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCkBAIC0xNjQ0LDYg
KzE2NTMsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkqPiBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcDsKIAog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBncmFudGVkKT4+
IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CisKKyNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCisgICAgSGFzaE1hcDx1aW50NjRfdCwgdWludDY0X3Q+IG1fYXBwbGlj
YXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXA7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZmFmNGNjYmRiZjUuLmYyZjE4Y2I1OWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTQ5MSw0ICs0OTEsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoU3RyaW5nIGlkZW50aWZpZXIsIHN0
cnVjdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlw
ZShTdHJpbmcgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVu
YW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgorCisjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3QoV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZTk4YWMzMGEzNy4uNzEzMGI5MmNhYTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNy0xMi0wMSAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBZGQgU1BJIGZvciBmZXRjaGlu
ZyB0aGUgbWFuaWZlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDI5NAorICAgICAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOiBBZGRlZC4K
KyAgICAgICAgICAgIEFkZGVkIHR3byBBUEkgdGVzdHMgZm9yIF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3Q6CisgICAgICAgICAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRpb25NYW5pZmVzdCdzIGNvbmZv
cm1hbmNlIHRvIE5TQ29kaW5nLgorICAgICAgICAgICAgLSBUZXN0aW5nIC1bV0tXZWJWaWV3IF9n
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0sIHZlcmlmeWluZyB0
aGUKKyAgICAgICAgICAgICAgdmFsdWVzIG9mIHRoZSByZXN1bHRpbmcgX1dLQXBwbGljYXRpb25N
YW5pZmVzdC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAg
ICAgICAgICAgIEFkZGVkIGEgbmV3IHRlc3RSdW5uZXIgbWV0aG9kIGdldEFwcGxpY2F0aW9uTWFu
aWZlc3RUaGVuKCksIHVzZWQgYnkgdGhlIExheW91dFRlc3RzCisgICAgICAgICAgICB0byByZXF1
ZXN0IHRoZSBkb2N1bWVudCBsb2FkIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0LiBUaGUgbGF5b3V0
IHRlc3RzIGZvcm1lcmx5IGNhbGxlZAorICAgICAgICAgICAgYW4gdW5pbXBsZW1lbnRlZCBmdW5j
dGlvbiBnZXRNYW5pZmVzdFRoZW4oKSwgYnV0IEkgYWRkZWQgJ0FwcGxpY2F0aW9uJyB0byBzb21l
d2hhdAorICAgICAgICAgICAgZGlmZmVyZW50aWF0ZSB0aGlzIGZyb20gdGhlIGFwcCBjYWNoZSBt
YW5pZmVzdC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2
ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmdldEFwcGxpY2F0
aW9uTWFuaWZlc3RUaGVuKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkR2V0QXBwbGlj
YXRpb25NYW5pZmVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25v
dXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxNy0xMS0xNiAgRGF2aWQgUXVlc2Fk
YSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGNsYXNzIGZvciBw
YXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4
YzZhNzE3NWUwYi4uNjdmZDc5Y2M4NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTks
NiArMjU5LDcgQEAKIAkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjM1NEY0RDAxRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJz
ZXIuY3BwICovOyB9OwogCQk2MzU2RkIyMjFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRl
bnRSZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjM1NkZCMjExRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSAqLzsgfTsK
IAkJNjM2MzUzQTcxRTk4NjY1RDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0
aW9uUmVzdWx0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3Vy
cmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi87IH07CisJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1
MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3QubW0gKi87IH07CiAJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNoQ291
bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovOyB9Owog
CQk3NTFCMDVENjFGOEVBQzQxMDAyOEEwOUUgLyogRGF0YWJhc2VUcmFja2VyVGVzdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1MUIwNUQ1MUY4RUFD
MUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tICovOyB9OwogCQk3NTRDRUM4MTFG
NjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyog
QXV0b0ZpbGxBdmFpbGFibGUubW0gKi87IH07CkBAIC0xNDAxLDYgKzE0MDIsNyBAQAogCQk2MzU0
RjREMDFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM1NkZCMjExRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVD
b250ZW50UmVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpc2libGVDb250ZW50UmVjdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFG
IC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEg
LyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcGxpY2F0
aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1MUIwNUQ1MUY4
RUFDMUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRGF0YWJhc2VUcmFja2VyVGVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQXV0b0ZpbGxBdmFpbGFibGUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc1NjA5MTc3MTkyNTlDNTkwMDlFRjA2RSAvKiBNZW1vcnlDYWNoZUFkZElt
YWdlVG9DYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjAwMCw2ICsyMDAyLDcgQEAKIAkJCQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQg
LyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2VkVVJMc1Byb3RvY29sLmggKi8sCiAJCQkJQTFE
Rjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAq
LywKIAkJCQkyREU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyogQW5pbWF0ZWRSZXNpemUubW0gKi8s
CisJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0g
Ki8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1t
ICovLAogCQkJCTJERDM1NTM1MUJEMDgzNzgwMDVERjRBNyAvKiBBdXRvTGF5b3V0SW50ZWdyYXRp
b24ubW0gKi8sCiAJCQkJMzc0QjdBNUUxREYzNkVFRTAwQUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdE
ZWxlZ2F0ZS5tbSAqLywKQEAgLTMyNTIsNiArMzI1NSw3IEBACiAJCQkJN0E5MDlBN0QxRDg3NzQ4
MDAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURG
NzQzMjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRFNzFBRkUxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVz
aXplLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNjNGNjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFw
cGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk2MzU0RjREMTFGN0MzQUI1
MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUNEQzhFNDhEMUJDNUNCNDUwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25D
YXRlZ29yeUlPUy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MTBhNzdhYWE3YwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRp
b25NYW5pZmVzdC5tbQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgor
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KworVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RDb2RpbmcpCit7CisgICAgYXV0byBq
c29uU3RyaW5nID0gQCJ7IFwibmFtZVwiOiBcIlRlc3ROYW1lXCIsIFwic2hvcnRfbmFtZVwiOiBc
IlRlc3RTaG9ydE5hbWVcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3REZXNjcmlwdGlvblwiLCBc
InNjb3BlXCI6IFwiaHR0cHM6Ly90ZXN0LmNvbS9hcHBcIiwgXCJzdGFydF91cmxcIjogXCJodHRw
czovL3Rlc3QuY29tL2FwcC9pbmRleC5odG1sXCIgfSI7CisgICAgUmV0YWluUHRyPF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0IHsgW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGlj
YXRpb25NYW5pZmVzdEZyb21KU09OOmpzb25TdHJpbmcgbWFuaWZlc3RVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL3Rlc3QuY29tL21hbmlmZXN0Lmpzb24iXSBkb2N1bWVudFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vdGVzdC5jb20vIl1dIH07CisgICAgCisgICAg
bWFuaWZlc3QgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6W05T
S2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDptYW5pZmVzdC5nZXQoKV1d
OworICAgIAorICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdCBpc0tpbmRPZkNsYXNzOltfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0IGNsYXNzXV0pOworICAgIEVYUEVDVF9TVFJFUSgiVGVzdE5hbWUiLCBt
YW5pZmVzdC5nZXQoKS5uYW1lLlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgiVGVzdFNo
b3J0TmFtZSIsIG1hbmlmZXN0LmdldCgpLnNob3J0TmFtZS5VVEY4U3RyaW5nKTsKKyAgICBFWFBF
Q1RfU1RSRVEoIlRlc3REZXNjcmlwdGlvbiIsIG1hbmlmZXN0LmdldCgpLmFwcGxpY2F0aW9uRGVz
Y3JpcHRpb24uVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwczovL3Rlc3QuY29t
L2FwcCIsIG1hbmlmZXN0LmdldCgpLnNjb3BlLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwor
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cHM6Ly90ZXN0LmNvbS9hcHAvaW5kZXguaHRtbCIsIG1hbmlm
ZXN0LmdldCgpLnN0YXJ0VVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOworfQorCitURVNU
KFdlYktpdCwgQXBwbGljYXRpb25NYW5pZmVzdEJhc2ljKQoreworICAgIHN0YXRpYyBib29sIGRv
bmUgPSBmYWxzZTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCIiXTsKKyAgICBbd2ViVmlldy5nZXQoKSBfZ2V0QXBwbGlj
YXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKG1hbmlmZXN0KTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bGlu
ayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJpbnZhbGlkdXJsOi8vcGF0aFwiPiJdOworICAgIFt3
ZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl4oX1dL
QXBwbGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3QpIHsKKyAgICAgICAgRVhQRUNUX05VTEwobWFu
aWZlc3QpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIE5TRGljdGlvbmFyeSAqbWFuaWZlc3RPYmpl
Y3QgPSBAeyBAIm5hbWUiOiBAIlRlc3QiIH07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGxpbmsgcmVsPVwibWFu
aWZlc3RcIiBocmVmPVwiZGF0YTphcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uO2NoYXJzZXQ9dXRm
LTg7YmFzZTY0LCVAXCI+IiwgW1tOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVj
dDptYW5pZmVzdE9iamVjdCBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRFbmNvZGVkU3RyaW5n
V2l0aE9wdGlvbnM6MF1dXTsKKyAgICBbd2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdp
dGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7
CisgICAgICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdC5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIlRl
c3QiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9u
ZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgbWFuaWZlc3RPYmplY3QgPSBAeworICAgICAg
ICBAIm5hbWUiOiBAIkEgV2ViIEFwcGxpY2F0aW9uIiwKKyAgICAgICAgQCJzaG9ydF9uYW1lIjog
QCJXZWJBcHAiLAorICAgICAgICBAImRlc2NyaXB0aW9uIjogQCJIZWxsby4iLAorICAgICAgICBA
InN0YXJ0X3VybCI6IEAiaHR0cDovL2V4YW1wbGUuY29tL2FwcC9zdGFydCIsCisgICAgICAgIEAi
c2NvcGUiOiBAImh0dHA6Ly9leGFtcGxlLmNvbS9hcHAiLAorICAgIH07CisgICAgTlNTdHJpbmcg
Kmh0bWxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1h
bmlmZXN0XCIgaHJlZj1cImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwi
PiIsIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmpl
Y3Qgb3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBd
XTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vYXBwL2luZGV4Il1dOworICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBbd2ViVmlldyBf
Z2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdC5u
YW1lIGlzRXF1YWxUb1N0cmluZzpAIkEgV2ViIEFwcGxpY2F0aW9uIl0pOworICAgICAgICBFWFBF
Q1RfVFJVRShbbWFuaWZlc3Quc2hvcnROYW1lIGlzRXF1YWxUb1N0cmluZzpAIldlYkFwcCJdKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LmFwcGxpY2F0aW9uRGVzY3JpcHRpb24gaXNF
cXVhbFRvU3RyaW5nOkAiSGVsbG8uIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3Qu
c3RhcnRVUkwgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNv
bS9hcHAvc3RhcnQiXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3Quc2NvcGUgaXNF
cXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS9hcHAiXV0pOwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxF
RCAmJiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAppbmRleCAzMzJmZTI2MWM2ZS4uYThiYzdjYmYyMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbApAQCAtMzA2LDQgKzMwNiw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lk
IHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFscyhvYmplY3QgY2FsbGJhY2spOworCisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbihvYmplY3QgY2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYzkz
MzlmMDFmMzAuLjU2YjBkY2RkYjU0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMjk4LDYgKzI5OCwx
MSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlk
R2V0QXBwbGljYXRpb25NYW5pZmVzdCIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+ZGlkR2V0
QXBwbGljYXRpb25NYW5pZmVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJvciIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gZXJyb3JNZXNzYWdlQm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiVW5rbm93biIpKTsKICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCBl
cnJvck1lc3NhZ2VOYW1lLmdldCgpLCBlcnJvck1lc3NhZ2VCb2R5LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmlu
ZGV4IGNiNTY3MGJlOTFkLi5hYTk4ZDBjYzVkZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC02NTIsNiArNjUyLDcg
QEAgZW51bSB7CiAgICAgU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrSUQsCiAgICAg
U3RhdGlzdGljc0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrSUQsCiAg
ICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2tJRCwKKyAgICBHZXRBcHBs
aWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwKICAgICBGaXJzdFVJU2NyaXB0Q2FsbGJhY2tJRCA9
IDEwMAogfTsKIApAQCAtMTg3NCw0ICsxODc1LDE3IEBAIHVpbnQ2NF90IFRlc3RSdW5uZXI6OmRv
bUNhY2hlU2l6ZShKU1N0cmluZ1JlZiBvcmlnaW4pCiAgICAgcmV0dXJuIFdLVUludDY0R2V0VmFs
dWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KHJldHVybkRhdGEpKTsKIH0KIAordm9pZCBUZXN0
UnVubmVyOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbihKU1ZhbHVlUmVmIGNhbGxiYWNrKQor
eworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxs
YmFja0lELCBjYWxsYmFjayk7CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJHZXRBcHBs
aWNhdGlvbk1hbmlmZXN0IikpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBu
dWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpkaWRHZXRBcHBsaWNhdGlv
bk1hbmlmZXN0KCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEdldEFwcGxpY2F0aW9u
TWFuaWZlc3RDYWxsYmFja0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGQz
NjkxMGQwMzFlLi5kNjQ0OTQzMTdjYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQwNSw2ICs0MDUsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhKU1ZhbHVlUmVmKTsKICAg
ICB2b2lkIGNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOworICAg
IAorICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oSlNWYWx1ZVJlZik7CisgICAg
dm9pZCBkaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CiAKIHByaXZhdGU6CiAgICAgVGVzdFJ1
bm5lcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAy
Y2E3ZTUyM2NjMi4uYWIzNGU0NDYzYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC0xMjQ1LDYgKzEyNDUsMTkgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVm
PiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3Rl
ZEIKICAgICAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiByZXN1bHQoQWRvcHRXSywgV0tVSW50
NjRDcmVhdGUoZG9tQ2FjaGVTaXplKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQor
ICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
R2V0QXBwbGljYXRpb25NYW5pZmVzdCIpKSB7CisjaWZkZWYgX19CTE9DS1NfXworICAgICAgICBX
S1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgXnsKKyAgICAgICAgICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QiKSk7CisgICAgICAgICAgICBXS1BhZ2VQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworICAgICAgICB9KTsKKyNl
bHNlCisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRpZEdldEFwcGxpY2F0aW9uTWFuaWZl
c3QiKSk7CisgICAgICAgICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIDApOworI2VuZGlmCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwo=
</data>
<flag name="review"
          id="347551"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>328466</attachid>
            <date>2017-12-05 10:32:37 -0800</date>
            <delta_ts>2017-12-05 17:15:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>3pfl.patch</filename>
            <type>text/plain</type>
            <size>72927</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IGUwYTFjMTFkZmMzOWVkNjJmNmRlYWQxZDMzNjVkOTk0NjkwMjc0MDEKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjA0OjU5IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3Ig
ZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjk0CiAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAogICAgCiAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAg
IFRlc3Q6IGFwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwKICAgIAog
ICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgog
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CiAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKToKICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgogICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5n
KToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFBy
b3BlcnR5SW52YWxpZFVSTCk6CiAgICAgICAgRHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5j
ZSB0aGUgd2FybmluZyBpcyBwcmVmaXhlZCB3aXRoICJwYXJzaW5nCiAgICAgICAgYXBwbGljYXRp
b24gbWFuaWZlc3Q6IiwgcmVtb3ZlIGEgcmVkdW5kYW50IHVzZSBvZiAiYXBwbGljYXRpb24gbWFu
aWZlc3QiLgogICAgCiAgICBTb3VyY2UvV2ViS2l0OgogICAgCiAgICBBZGQgYSBuZXcgbWV0aG9k
IC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0gdG8gcmVxdWVzdAogICAgdGhlIG1hbmlmZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVu
dCBwYWdlLgogICAgCiAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CiAgICAqIFNoYXJlZC9D
b2NvYS9BUElPYmplY3QubW06CiAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CiAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5o
LgogICAgICAgIEFkZCBhIG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlm
ZXN0cy4KICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CiAgICAoV0tQYWdlR2V0QXBw
bGljYXRpb25NYW5pZmVzdF9iKToKICAgICAgICBBZGQgYSBDIHZlcnNpb24gb2YgdGhpcyBTUEkg
Zm9yIFdlYktpdFRlc3RSdW5uZXIuCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
Lmg6CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgogICAgKC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgogICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0Lmgu
CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRk
ZWQuCiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGVuY29kZVdpdGhDb2RlcjpdKToKICAgICgrW19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJM
OmRvY3VtZW50VVJMOl0pOgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBfYXBpT2JqZWN0
XSk6CiAgICAobnVsbGFibGVOU1N0cmluZyk6CiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IG5hbWVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2hvcnROYW1lXSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uRGVzY3JpcHRpb25dKToKICAgICgt
W19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2NvcGVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3Qgc3RhcnRVUkxdKToKICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KICAgIChBUEk6OndyYXBw
ZXIpOgogICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6YXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKToKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgogICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CiAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFw
cGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKICAgIAogICAg
VG9vbHM6CiAgICAKICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
bGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCiAgICAgICAgQWRkZWQgdHdvIEFQSSB0ZXN0cyBm
b3IgX1dLQXBwbGljYXRpb25NYW5pZmVzdDoKICAgICAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRp
b25NYW5pZmVzdCdzIGNvbmZvcm1hbmNlIHRvIE5TQ29kaW5nLgogICAgICAgIC0gVGVzdGluZyAt
W1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpd
LCB2ZXJpZnlpbmcgdGhlCiAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlc3VsdGluZyBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LgogICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgogICAgCiAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CiAg
ICAgICAgQWRkZWQgYSBuZXcgdGVzdFJ1bm5lciBtZXRob2QgZ2V0QXBwbGljYXRpb25NYW5pZmVz
dFRoZW4oKSwgdXNlZCBieSB0aGUgTGF5b3V0VGVzdHMKICAgICAgICB0byByZXF1ZXN0IHRoZSBk
b2N1bWVudCBsb2FkIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0LiBUaGUgbGF5b3V0IHRlc3RzIGZv
cm1lcmx5IGNhbGxlZAogICAgICAgIGFuIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZl
c3RUaGVuKCksIGJ1dCBJIGFkZGVkICdBcHBsaWNhdGlvbicgdG8gc29tZXdoYXQKICAgICAgICBk
aWZmZXJlbnRpYXRlIHRoaXMgZnJvbSB0aGUgYXBwIGNhY2hlIG1hbmlmZXN0LgogICAgCiAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgogICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKICAgIChXVFI6OlRl
c3RSdW5uZXI6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKToKICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CiAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAg
CiAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAgU2tpcCB0aGUgYXBwIG1hbmlmZXN0LXJl
bGF0ZWQgbGF5b3V0IHRlc3RzIGZvciBub3cgd2hpbGUgdGhlIGZlYXR1cmUgaXMgc3RpbGwgZGlz
YWJsZWQuCiAgICAgICAgQWxzbyBtb3ZlZCB0aGUgZXhwZWN0YXRpb25zIGRpc2FibGluZyB0aGUg
bWFuaWZlc3Qtc3JjIGxheW91dCB0ZXN0cyAod2hpY2ggbm93IHBhc3MKICAgICAgICB3aGVuIHRo
ZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgog
ICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQ6
IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1s
OiBBZGRlZC4KICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0
bWw6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSBvbmx5IHRoZSBm
aXJzdCBtYW5pZmVzdCBsaW5rIGlzIGxvYWRlZCB3aGVuIHRoZXJlCiAgICAgICAgYXJlIG11bHRp
cGxlIG9uIHRoZSBwYWdlLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZl
bG9wZXItd2FybmluZ3MubWFuaWZlc3Q6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHdhcm5pbmdzIGdlbmVyYXRlZCB3aGlsZSBwYXJzaW5nIHRoZSBtYW5p
ZmVzdCBhcmUKICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWw6
CiAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBs
aWNhdGlvbk1hbmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CiAgICAgICAg
VXBkYXRlZCB0aGUgZXhwZWN0ZWQgY29uc29sZSBtZXNzYWdlIHRvIHJlZmxlY3QgdGhlIGN1cnJl
bnQgd29yZGluZyBmb3IgQ1NQIHZpb2xhdGlvbnMuCiAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWw6CiAgICAgICAg
UmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb246CiAgICAgICAgUmVtb3ZlZCBhIHRyYWls
aW5nIG5ld2xpbmUgdGhhdCB3YXMgY2F1c2luZyBKU09OIHBhcnNpbmcgdG8gZmFpbC4KCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZGM3Y2VlMWRlYzUuLmI0MWZkOTI2NWFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTct
MTItMDEgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBT
a2lwIHRoZSBhcHAgbWFuaWZlc3QtcmVsYXRlZCBsYXlvdXQgdGVzdHMgZm9yIG5vdyB3aGlsZSB0
aGUgZmVhdHVyZSBpcyBzdGlsbCBkaXNhYmxlZC4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhl
IGV4cGVjdGF0aW9ucyBkaXNhYmxpbmcgdGhlIG1hbmlmZXN0LXNyYyBsYXlvdXQgdGVzdHMgKHdo
aWNoIG5vdyBwYXNzCisgICAgICAgICAgICB3aGVuIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRv
IHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFu
aWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbDog
QWRkZWQuCisgICAgICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgb25seSB0aGUg
Zmlyc3QgbWFuaWZlc3QgbGluayBpcyBsb2FkZWQgd2hlbiB0aGVyZQorICAgICAgICAgICAgYXJl
IG11bHRpcGxlIG9uIHRoZSBwYWdlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvcmVz
b3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICAgICBB
ZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3YXJuaW5ncyBnZW5lcmF0ZWQgd2hpbGUg
cGFyc2luZyB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbDoKKyAgICAgICAgICAgIFJlcGxhY2VkIGNhbGxzIHRv
IGdldE1hbmlmZXN0VGhlbigpIHdpdGggZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oKS4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVz
dC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICBVcGRhdGVkIHRoZSBleHBl
Y3RlZCBjb25zb2xlIG1lc3NhZ2UgdG8gcmVmbGVjdCB0aGUgY3VycmVudCB3b3JkaW5nIGZvciBD
U1AgdmlvbGF0aW9ucy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sOgorICAgICAgICAgICAgUmVwbGFj
ZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
VGhlbigpLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbjoKKyAgICAgICAgICAgIFJlbW92ZWQgYSB0
cmFpbGluZyBuZXdsaW5lIHRoYXQgd2FzIGNhdXNpbmcgSlNPTiBwYXJzaW5nIHRvIGZhaWwuCisK
IDIwMTctMTItMDUgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtX
aW5dIFNraXAgdGVzdHMgdGhhdCBkZXBlbmQgb24gVUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9T
Y2FsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMDNjZmFhNGU2NWEuLjdhMjVhZjQwY2RmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTEwODYsOCArMTA4Niw2IEBAIHdlYmtpdC5vcmcvYi8xMTE4Njkg
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZXZhbC1ibG9ja2VkLWFu
ZC1zCiB3ZWJraXQub3JnL2IvMTUzMTQ4IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L2V2YWwtYWxsb3dlZC1pbi1yZXBvcnQtb25seS1tb2RlLWFuZC1zZW5kcy1yZXBv
cnQucGhwCiB3ZWJraXQub3JnL2IvMTUzMTUwIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9jaGlsZC1zcmMvZnJhbWUtZmlyZXMtbG9hZC1ldmVudC13aGVuLWJs
b2NrZWQuaHRtbAogd2Via2l0Lm9yZy9iLzE1MzE1MCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS8xLjEvY2hpbGQtc3JjL2ZyYW1lLWZpcmVzLWxvYWQtZXZlbnQtd2hl
bi1yZWRpcmVjdC1ibG9ja2VkLmh0bWwKLXdlYmtpdC5vcmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCAj
IE5lZWRzIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVuKCkKLXdlYmtpdC5vcmcvYi8xNTMxNTIg
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJs
b2NrZWQuaHRtbCAjIE5lZWRzIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVuKCkKIHdlYmtpdC5v
cmcvYi8xNTMxNTUgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4x
L3NjcmlwdGhhc2gtYmFzaWMtYmxvY2tlZC1lcnJvci1ldmVudC5odG1sCiB3ZWJraXQub3JnL2Iv
MTUzMTU1IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHls
ZWhhc2gtYmFzaWMtYmxvY2tlZC1lcnJvci1ldmVudC5odG1sCiB3ZWJraXQub3JnL2IvMTUzMTU1
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gt
c3ZnLXN0eWxlLWJhc2ljLWJsb2NrZWQtZXJyb3ItZXZlbnQuaHRtbApAQCAtMTYyNiwzICsxNjI0
LDkgQEAgd2Via2l0Lm9yZy9iLzE3OTI4NyBodHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZh
Y2VzL0FuaW1hdGlvblRpbWVsaW5lL2RvY3VtZW4KIHdlYmtpdC5vcmcvYi8xNzkyODcgaHR0cC93
cHQvd2ViLWFuaW1hdGlvbnMvdGltaW5nLW1vZGVsL2FuaW1hdGlvbnMvc2V0LXRoZS1hbmltYXRp
b24tc3RhcnQtdGltZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3NzQ0
MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL3Jl
bGF4aW5nLXRoZS1zYW1lLW9yaWdpbi1yZXN0cmljdGlvbi9kb2N1bWVudF9kb21haW5fc2V0dGVy
X251bGwudGVudGF0aXZlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQorCisjIEFwcGxpY2F0aW9uIE1h
bmlmZXN0IHRlc3RzCit3ZWJraXQub3JnL2IvMTUzMTUyIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwgWyBTa2lwIF0KK3dl
YmtpdC5vcmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE1ODIw
NSBhcHBsaWNhdGlvbm1hbmlmZXN0LyBbIFNraXAgXQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIzMjBmNDUyZTIx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZl
bG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNT
QUdFOiBQYXJzaW5nIGFwcGxpY2F0aW9uIG1hbmlmZXN0IGRldmVsb3Blci13YXJuaW5ncy5tYW5p
ZmVzdDogVGhlIHZhbHVlIG9mICJzdGFydF91cmwiIGlzIG5vdCBhIHZhbGlkIFVSTC4KK0NPTlNP
TEUgTUVTU0FHRTogUGFyc2luZyBhcHBsaWNhdGlvbiBtYW5pZmVzdCBkZXZlbG9wZXItd2Fybmlu
Z3MubWFuaWZlc3Q6IFRoZSB2YWx1ZSBvZiAibmFtZSIgaXMgbm90IGEgc3RyaW5nLgorQUxFUlQ6
IFBhc3MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZl
bG9wZXItd2FybmluZ3MuaHRtbCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvZGV2
ZWxvcGVyLXdhcm5pbmdzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjNlNWJjNzdiZjZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRp
b25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbApAQCAtMCwwICsxLDExIEBACis8bGlu
ayByZWw9Im1hbmlmZXN0IiBocmVmPSJyZXNvdXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlm
ZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBh
bGVydCgiUGFzcyIpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9KTsK
K30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVz
dC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1h
bmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZTE5ZjUzZTRlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKK211bGl0cGxlLWxpbmtzLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCit1cmxz
Y2hlbWU6Ly8xIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIHVybHNjaGVtZTov
LzEsIG1haW4gZG9jdW1lbnQgVVJMIG11bGl0cGxlLWxpbmtzLmh0bWwsIGh0dHAgbWV0aG9kIEdF
VD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKK3VybHNjaGVtZTovLzEgLSBkaWRGYWlsTG9hZGlu
Z1dpdGhFcnJvcjogPE5TRXJyb3IgZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTEwMDIs
IGZhaWxpbmcgVVJMICJ1cmxzY2hlbWU6Ly8xIj4KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbCBiL0xheW91
dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzVkODAxMTc3MWMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0idXJsc2NoZW1lOi8v
MSIgbWVkaWE9InByaW50Ij4KKzxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9InVybHNjaGVtZTov
LzIiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVt
cFJlc291cmNlTG9hZENhbGxiYWNrcygpOworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CXRlc3RSdW5uZXIuZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CisJCXRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0pOworfQorPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVz
dC9yZXNvdXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvYXBw
bGljYXRpb25tYW5pZmVzdC9yZXNvdXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YTBiYjA4N2E3OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2Rl
dmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdApAQCAtMCwwICsxLDQgQEAKK3sKKyAgICAibmFtZSI6
IDAsCisgICAgInN0YXJ0X3VybCI6ICJodHRwOj8iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxv
d2VkLmh0bWwKaW5kZXggZGRiZDQ3ZDI3ZTIuLmVmNWUxMGFlZGI4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVz
dC1zcmMtYWxsb3dlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwKQEAgLTQsNyAr
NCw3IEBACiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAg
ICAgdGVzdFJ1bm5lci5nZXRNYW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICBhbGVydCgiUGFzcyIpOwogICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAg
ICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFu
aWZlc3Qtc3JjLWJsb2NrZWQtZXhwZWN0ZWQudHh0CmluZGV4IDcwNmI4ODVjNjU2Li4yZjY1MWM2
ZDhlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlm
ZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVT
U0FHRTogUmVmdXNlZCB0byBsb2FkIG1hbmlmZXN0IGZyb20gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3QudGVzdC9tYW5pZmVzdC5q
c29uJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kgZGlyZWN0aXZlOiAibWFuaWZlc3Qtc3JjICdub25lJyIuCi0KK0NPTlNPTEUgTUVTU0FH
RTogUmVmdXNlZCB0byBsb2FkIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3QudGVzdC9tYW5pZmVzdC5qc29uIGJlY2F1c2UgaXQgZG9l
cyBub3QgYXBwZWFyIGluIHRoZSBtYW5pZmVzdC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50
IFNlY3VyaXR5IFBvbGljeS4KIEFMRVJUOiBQYXNzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1i
bG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sCmluZGV4IGE3ZGY3MTQ2YmY0Li5j
ZDRkMWY3Yjg5NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVz
dC1zcmMtYmxvY2tlZC5odG1sCkBAIC00LDcgKzQsNyBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVu
KGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RU
aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYWxlcnQoIlBhc3MiKTsKICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0
LnRlc3QvbWFuaWZlc3QuanNvbiBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbgppbmRleCBkYTZk
Y2Y4YjU4My4uN2ZlODg0ZDdhMDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNv
bgorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24KQEAgLTEsNCArMSw0IEBACiB7CiAgICAg
Im5hbWUiOiAiU3VwZXIgUmFjZXIgMjAwMCIsCiAgICAgInN0YXJ0X3VybCI6ICIvc3RhcnQuaHRt
bCIKLX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYzOWJk
OGM5MjkuLjhjMDIxYTZhOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTIt
MDEgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICBUZXN0OiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13
YXJuaW5ncy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eU5vdEFTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFs
aWRVUkwpOgorICAgICAgICAgICAgRHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5jZSB0aGUg
d2FybmluZyBpcyBwcmVmaXhlZCB3aXRoICJwYXJzaW5nCisgICAgICAgICAgICBhcHBsaWNhdGlv
biBtYW5pZmVzdDoiLCByZW1vdmUgYSByZWR1bmRhbnQgdXNlIG9mICJhcHBsaWNhdGlvbiBtYW5p
ZmVzdCIuCisKIDIwMTctMTEtMTcgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRjaGluZyB0aGUg
YXBwIG1hbmlmZXN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggZWY5NjI2
OTA5NjcuLmM3MGU3ZTYwYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKICNpbmNs
dWRlICJVUkwuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zNyw4ICszOCwzNiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdCB7CiAg
ICAgU3RyaW5nIGRlc2NyaXB0aW9uOwogICAgIFVSTCBzY29wZTsKICAgICBVUkwgc3RhcnRVUkw7
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBw
bGljYXRpb25NYW5pZmVzdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbmFtZSA8PCBzaG9ydE5hbWUgPDwgZGVzY3Jp
cHRpb24gPDwgc2NvcGUgPDwgc3RhcnRVUkw7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QgcmVz
dWx0OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubmFtZSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvcnRO
YW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5kZXNjcmlwdGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2NvcGUpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN0YXJ0VVJMKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5p
ZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRl
eCA0NjdlNTY4MzE0YS4uMDk3MGE1MjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRp
b25NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTc5LDEyICs3OSwxMiBAQCBBcHBsaWNhdGlvbk1hbmlm
ZXN0IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlTWFuaWZlc3QoY29uc3QgU3RyaW5n
JiB0ZXh0LAogCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJv
cGVydHlOb3RBU3RyaW5nKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIGxvZ0Rl
dmVsb3Blcldhcm5pbmcoIlRoZSBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgYXBwbGljYXRpb24g
bWFuaWZlc3QgcHJvcGVydHkgaXMgbm90IGEgc3RyaW5nLiIpOworICAgIGxvZ0RldmVsb3Blcldh
cm5pbmcoIlRoZSB2YWx1ZSBvZiBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgaXMgbm90IGEgc3Ry
aW5nLiIpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0
UHJvcGVydHlJbnZhbGlkVVJMKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIGxv
Z0RldmVsb3Blcldhcm5pbmcoIlRoZSBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgYXBwbGljYXRp
b24gbWFuaWZlc3QgcHJvcGVydHkgaXMgbm90IGEgdmFsaWQgVVJMLiIpOworICAgIGxvZ0RldmVs
b3Blcldhcm5pbmcoIlRoZSB2YWx1ZSBvZiBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgaXMgbm90
IGEgdmFsaWQgVVJMLiIpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6Omxv
Z0RldmVsb3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5Y2Zi
Y2Y3OTc0Mi4uNTA3Njk5NWU5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTIt
MDEgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICBBZGQgYSBuZXcgbWV0aG9kIC1bV0tXZWJWaWV3IF9nZXRBcHBs
aWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0gdG8gcmVxdWVzdAorICAgICAg
ICB0aGUgbWFuaWZlc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHBhZ2UuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aC4KKyAgICAgICAgICAgIEFkZCBhIG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9u
IG1hbmlmZXN0cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgICAgICBBZGQgYSBD
IHZlcnNpb24gb2YgdGhpcyBTUEkgZm9yIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1h
bmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCisg
ICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAg
ICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAg
ICgrW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1h
bmlmZXN0VVJMOmRvY3VtZW50VVJMOl0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0IF9hcGlPYmplY3RdKToKKyAgICAgICAgKG51bGxhYmxlTlNTdHJpbmcpOgorICAgICAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IG5hbWVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRp
b25NYW5pZmVzdCBzaG9ydE5hbWVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVz
dCBhcHBsaWNhdGlvbkRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3Qgc2NvcGVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBzdGFydFVS
TF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVz
dEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRp
b25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmguCisgICAgICAgIChBUEk6OndyYXBwZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNh
dGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTctMTItMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdXBwb3J0IGNvbnRhaW5lci5nZXRSZWdpc3RyYXRpb24oKSAvIGdldFJlZ2lzdHJhdGlvbnMo
KSBpbnNpZGUgc2VydmljZSB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
aW5kZXggZjA3NDE0Yzg3YTkuLjc1NTcyYTZkYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCkBAIC05Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8v
IFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgIEFwcGxpY2F0aW9uTWFuaWZlc3Qs
CisjZW5kaWYKICAgICAgICAgQXR0YWNobWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24s
CiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbQppbmRleCBkZmJhOWZkOTRmMS4uYzc1YjIzMTQ2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTgxLDYgKzgxLDEwIEBACiAjaW1wb3J0ICJfV0tV
c2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50
ZXJuYWwuaCIKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbXBvcnQgIl9X
S0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgorI2VuZGlmCisKIHN0YXRpYyBjb25zdCBz
aXplX3QgbWluaW11bU9iamVjdEFsaWdubWVudCA9IDg7CiBzdGF0aWNfYXNzZXJ0KG1pbmltdW1P
YmplY3RBbGlnbm1lbnQgPj0gYWxpZ25vZih2b2lkKiksICJPYmplY3RzIHNob3VsZCBhbHdheXMg
YmUgYXQgbGVhc3QgcG9pbnRlci1hbGlnbmVkLiIpOwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhp
bXVtRXh0cmFTcGFjZUZvckFsaWdubWVudCA9IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgLSBhbGln
bm9mKHZvaWQqKTsKQEAgLTExOSw2ICsxMjMsMTIgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qo
c2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAvLyBBUEk6Ok9iamVjdCwgc28gdGhleSBhcmUg
YWxsb2NhdGVkIHVzaW5nICthbGxvYy4KIAogICAgIHN3aXRjaCAodHlwZSkgeworI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIFR5cGU6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q6CisgICAgICAgIHdyYXBwZXIgPSBbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhbGxvY107Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICBjYXNlIFR5cGU6OkFycmF5OgogICAgICAgICB3
cmFwcGVyID0gW1dLTlNBcnJheSBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVmMmMxNjZlOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aD4KKworbmFtZXNwYWNlIEFQSSB7CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CitjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbk1hbmlmZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdCYgYXBwbGljYXRpb25NYW5pZmVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFwcGxpY2F0aW9uTWFuaWZlc3QoYXBwbGljYXRpb25NYW5pZmVzdCkpOworICAg
IH0KKyAgICBjb25zdCBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1h
bmlmZXN0KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgQXBwbGljYXRpb25NYW5pZmVzdChjb25zdCBXZWJDb3JlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgICAgICA6IG1fYXBwbGlj
YXRpb25NYW5pZmVzdChhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgIHsKKyAgICB9CisgICAgV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdCBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7Cit9OworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAppbmRleCBmMjI0NGQ3NDM3NC4uMzJlNGY0YWZkYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjc2MCwzICsyNzYwLDE3IEBAIFByb2Nl
c3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2UpLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQorCisjaWZkZWYgX19C
TE9DS1NfXwordm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdlUmVmIHBh
Z2UsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykKK3sKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgdG9JbXBsKHBhZ2UpLT5nZXRBcHBsaWNhdGlv
bk1hbmlmZXN0KFtibG9ja10oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0PiAmbWFuaWZlc3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgYmxv
Y2soKTsKKyAgICB9KTsKKyNlbHNlIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAg
ICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgYmxvY2soKTsKKyNlbmRpZiAvLyBub3QgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKaW5kZXggMGRmODM2NDg5NGUuLmJiMjZkZThhYmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBA
IC0xNzgsNiArMTc4LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9y
dFNjYWxlTGltaXRzKFdLUGFnZVJlZiBwYWdlLCBib29sIGlnbm9yZXNWCiAKIFdLX0VYUE9SVCBX
S1Byb2Nlc3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSk7CiAK
KyNpZmRlZiBfX0JMT0NLU19fCit0eXBlZGVmIHZvaWQgKF5XS1BhZ2VHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0QmxvY2spKHZvaWQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25N
YW5pZmVzdF9iKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Qmxv
Y2sgYmxvY2spOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTQx
NmNkOGJkOC4uYTI5ZGJjYjFmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTE3LDYgKzExNywxMCBAQAogI2ltcG9ydCA8d3RmL3Nw
aS9kYXJ3aW4vZHlsZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2ltcG9ydCAiX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ICNpbXBvcnQgIldLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIgogI2VuZGlmCkBAIC00MzQ0
LDYgKzQzNDgsMjUgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvcgogICAgIH0pOwogfQogCistICh2
b2lkKV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIF9wYWdlLT5nZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlm
ZXN0LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgVU5VU0VE
KGVycm9yKTsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBp
ZiAobWFuaWZlc3QpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFwaU1hbmlmZXN0ID0gQVBJOjpB
cHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUoKm1hbmlmZXN0KTsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGFwaU1hbmlmZXN0KSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9Cisg
ICAgfSk7CisjZWxzZQorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCiAtIChfV0tQYWdpbmF0aW9uTW9kZSlfcGFn
aW5hdGlvbk1vZGUKIHsKICAgICBzd2l0Y2ggKF9wYWdlLT5wYWdpbmF0aW9uTW9kZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCA5NjZmYjliYTE5Yi4uNTdkODIyZjc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtOTYsNiAr
OTYsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2Vu
ZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0OwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RS
ZXN1bHQ7CiBAY2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKQEAgLTMwNyw2ICszMDgsOCBA
QCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClf
Z2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAq
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0
cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygx
MS4wKSk7CiAKKy0gKHZvaWQpX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKikpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFBhZ2luYXRpb25Nb2RlOikgX1dL
UGFnaW5hdGlvbk1vZGUgX3BhZ2luYXRpb25Nb2RlOwogLy8gV2hldGhlciB0aGUgY29sdW1uLWJy
ZWFrLXtiZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMgYXJlIHJlc3BlY3RlZCBpbnN0ZWFkIG9mIHRo
ZQogLy8gcGFnZS1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9wZXJ0aWVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxYzUwZjJiZTEw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgOiBO
U09iamVjdCA8TlNDb2Rpbmc+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVs
bGFibGUsIGNvcHkpIE5TU3RyaW5nICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnNob3J0TmFtZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICphcHBsaWNhdGlvbkRl
c2NyaXB0aW9uOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29w
eSkgTlNVUkwgKnNjb3BlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U1VSTCAqc3RhcnRVUkw7CisKKysgKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlv
bk1hbmlmZXN0RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBtYW5pZmVzdFVSTDooTlNVUkwgKilt
YW5pZmVzdFVSTCBkb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKilkb2N1bWVudFVSTDsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi45OTJjZWE0NmQ1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC0wLDAgKzEsMTU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPFdl
YkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKK3sKKyAgICBbc2VsZiByZWxlYXNl
XTsKKworICAgIE5TU3RyaW5nICpuYW1lID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdEZvcktleTpA
Im5hbWUiXTsKKyAgICBOU1N0cmluZyAqc2hvcnROYW1lID0gW2FEZWNvZGVyIGRlY29kZU9iamVj
dEZvcktleTpAInNob3J0X25hbWUiXTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb24gPSBbYURl
Y29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAiZGVzY3JpcHRpb24iXTsKKyAgICBOU1VSTCAqc2Nv
cGVVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAic2NvcGUiXTsKKyAgICBOU1VS
TCAqc3RhcnRVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAic3RhcnRfdXJsIl07
CisKKyAgICBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0IGNvcmVBcHBsaWNhdGlvbk1hbmlm
ZXN0IHsKKyAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCisgICAgICAgIFdURjo6U3RyaW5nKHNo
b3J0TmFtZSksCisgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0aW9uKSwKKyAgICAgICAgV2Vi
Q29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgV2ViQ29yZTo6VVJMKHN0YXJ0VVJMKQorICAg
IH07CisKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0
ZShjb3JlQXBwbGljYXRpb25NYW5pZmVzdCkubGVha1JlZigpKTsKK30KKworLSAodm9pZCllbmNv
ZGVXaXRoQ29kZXI6KE5TQ29kZXIgKilhQ29kZXIKK3sKKyAgICBbYUNvZGVyIGVuY29kZU9iamVj
dDpzZWxmLm5hbWUgZm9yS2V5OkAibmFtZSJdOworICAgIFthQ29kZXIgZW5jb2RlT2JqZWN0OnNl
bGYuc2hvcnROYW1lIGZvcktleTpAInNob3J0X25hbWUiXTsKKyAgICBbYUNvZGVyIGVuY29kZU9i
amVjdDpzZWxmLmFwcGxpY2F0aW9uRGVzY3JpcHRpb24gZm9yS2V5OkAiZGVzY3JpcHRpb24iXTsK
KyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLnNjb3BlIGZvcktleTpAInNjb3BlIl07Cisg
ICAgW2FDb2RlciBlbmNvZGVPYmplY3Q6c2VsZi5zdGFydFVSTCBmb3JLZXk6QCJzdGFydF91cmwi
XTsKK30KKworKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RG
cm9tSlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJM
IGRvY3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJMCit7CisgICAgYXV0byBtYW5pZmVzdCA9
IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpz
b24pLCBXZWJDb3JlOjpVUkwobWFuaWZlc3RVUkwpLCBXZWJDb3JlOjpVUkwoZG9jdW1lbnRVUkwp
KTsKKyAgICByZXR1cm4gW0FQSTo6d3JhcHBlcihBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNy
ZWF0ZShtYW5pZmVzdCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKEFQSTo6T2Jq
ZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfYXBwbGljYXRpb25NYW5pZmVzdDsKK30K
Kworc3RhdGljIE5TU3RyaW5nICpudWxsYWJsZU5TU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5pc051bGwoKSA/IG5pbCA6IChOU1N0cmluZyAq
KXN0cmluZzsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIG51bGxhYmxl
TlNTdHJpbmcoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5uYW1l
KTsKK30KKworLSAoTlNTdHJpbmcgKilzaG9ydE5hbWUKK3sKKyAgICByZXR1cm4gbnVsbGFibGVO
U1N0cmluZyhfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLnNob3J0
TmFtZSk7Cit9CisKKy0gKE5TU3RyaW5nICopYXBwbGljYXRpb25EZXNjcmlwdGlvbgoreworICAg
IHJldHVybiBudWxsYWJsZU5TU3RyaW5nKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlv
bk1hbmlmZXN0KCkuZGVzY3JpcHRpb24pOworfQorCistIChOU1VSTCAqKXNjb3BlCit7CisgICAg
cmV0dXJuIF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkuc2NvcGU7
Cit9CisKKy0gKE5TVVJMICopc3RhcnRVUkwKK3sKKyAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFu
aWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5zdGFydFVSTDsKK30KKworI2Vsc2UgLy8gRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisrIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICop
YXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6
KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWFEZWNvZGVyCit7CisgICAgVU5VU0VEKGFEZWNvZGVy
KTsKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2Rl
ciAqKWFDb2RlcgoreworICAgIFVOVVNFRChhQ29kZXIpOworfQorCistIChOU1N0cmluZyAqKW5h
bWUKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1N0cmluZyAqKXNob3J0TmFtZQorewor
ICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopYXBwbGljYXRpb25EZXNjcmlwdGlv
bgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TVVJMICopc2NvcGUKK3sKKyAgICByZXR1
cm4gbmlsOworfQorCistIChOU1VSTCAqKXN0YXJ0VVJMCit7CisgICAgcmV0dXJuIG5pbDsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworQGVuZAorCisjZW5k
aWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmI4Nzg4NmMxNjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdEludGVybmFsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW1wb3J0
ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9u
TWFuaWZlc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFwcGxpY2F0aW9uTWFu
aWZlc3Q7Cit9CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCituYW1lc3BhY2Ug
QVBJIHsKKworaW5saW5lIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKndyYXBwZXIoQVBJOjpBcHBs
aWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQoreworICAgIEFTU0VSVChbYXBw
bGljYXRpb25NYW5pZmVzdC53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXBwbGljYXRpb25N
YW5pZmVzdCBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilh
cHBsaWNhdGlvbk1hbmlmZXN0LndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IF9hcHBsaWNhdGlvbk1hbmlmZXN0
OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYmJiOGEyNzg1OGQuLmNkODk5YTY4NDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUzMTMsNiArNTMxMywxNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiByYW5n
ZSwgQ2FsbGJhY2tJRCBjYQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJu
VmFsdWUocmFuZ2UpOwogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordm9p
ZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdE9yTnVsbCwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50
YWtlPEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgaWYgKCFj
YWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFj
a1dpdGhSZXR1cm5WYWx1ZShtYW5pZmVzdE9yTnVsbCk7Cit9CisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKENPQ09BKQogdm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25z
dCBNYWNoU2VuZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKQEAg
LTcyMjQsNCArNzIzNSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlQXR0YWNobWVu
dChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordm9pZCBXZWJQ
YWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKHN0ZDo6bnVsbG9wdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
VW5rbm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX2xvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDI5Mzg4OWZjZjMyLi4zZWJmMjFmYTdlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsNiArMTU3LDcg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlk
YXRpb25CdWJibGU7CiAKK3N0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0Owogc3RydWN0IERpY3Rp
b25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGaWxlQ2hv
b3NlclNldHRpbmdzOwpAQCAtMjY1LDYgKzI2NiwxMCBAQCBzdHJ1Y3QgUXVldWVkVG91Y2hFdmVu
dHMgewogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJf
dD4gVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gUmVjdEZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2s7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit0eXBl
ZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q+Jj4gQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrOworI2VuZGlmCisKICNp
ZiBQTEFURk9STShNQUMpCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBBdHRyaWJ1dGVk
U3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBk
b3VibGUsIGJvb2w+IEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrOwpAQCAtMTI0Miw2ICsxMjQ3LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4m
JiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2b2lkIGdldEFw
cGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMTUwMiw2ICsxNTExLDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJv
b2wsIGludCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRp
bmdSYW5nZSYsIENhbGxiYWNrSUQpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
KyAgICB2b2lkIGFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tJRCk7CisjZW5kaWYKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIG1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBX
ZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZWZhNWZj
ZWZlMi4uM2RiNTkzZmVkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2Nyw2ICsxNjcsOSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIEVkaXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkVkaXRp
bmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVW5zaWdu
ZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKFdlYkNvcmU6OkludFJlY3QgcmVj
dCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6OkNhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAg
QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdD4gbWFuaWZlc3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFt
ZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0
OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNjQ1ZTdkMzZjYS4uZDczMDlmNjAxYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIy
OCw2ICsxMjI4LDEwIEBACiAJCTVDRTg1QjIwMUM4OEU2NEIwMDcwQkZDRSAvKiBQaW5nTG9hZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFODVCMUYx
Qzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi87IH07CiAJCTVDRkVDQjA0MUUxRUQxQ0Mw
MEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRUNCMDMxRTFFRDFDODAwRjg4NTA0
IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAgKi87IH07CiAJCTYxN0E1MkQ4MUY0
M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUy
RDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CisJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTYzMTA4
Rjk3MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTUxRjk2NzE5QzAw
QTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi87IH07CisJCTYzMTA4Rjk5MUY5
NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcw
MEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKKwkJNjM0
ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRGMUZCMjZFNzEw
MDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CiAJCTYzNjM1M0E1MUU5
ODU4REYwMDA5RjhBRiAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0ZBQkUxOTFFOTcw
RDY1MDAzMDExRDUgLyogX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzQzMyQzI1MUU5
ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQw
IC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gKi87IH07CiAJCTYzQzMyQzI2MUU5ODEwRDkw
MDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNDFFOTgxMEQ5MDA2OTlCRDAgLyogX1dL
R2VvbG9jYXRpb25Qb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zNjE4LDYgKzM2MjIsMTAgQEAKIAkJNUQ0NDJBNTUxNkQ1ODU2NzAw
QUMzMzMxIC8qIFBsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSBQbHVnaW5TZXJ2
aWNlLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDczRjEx
MTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBw
bGljYXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4
NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dL
QXBwbGljYXRpb25NYW5pZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjMx
MDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFw
cGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXBwbGljYXRpb25NYW5pZmVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2M0MzMkMyMzFFOTgxMEQ5MDA2OTlC
RDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlv
blBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0
aW9uUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjNDMzJDMjcxRTk4
MTE5MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3OTUsNiArNTgwMyw5IEBACiAJCQkJ
MzdBNUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8s
CiAJCQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
Lm1tICovLAogCQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mb0ludGVybmFsLmggKi8sCisJCQkJNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9X
S0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLywKKwkJCQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk2MzEwOEY5ODFGOTY3MUY3MDBB
MERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi8sCiAJCQkJRjQ0Mjkx
OTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLywKIAkJCQlGNDQyOTE5MzFG
QTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLywKIAkJCQlGNDQyOTE5NTFGQTU5
NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi8sCkBAIC03MTk1LDYgKzcy
MDYsNyBAQAogCQkJCTM3QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAqLywKIAkJCQlC
QzhBNTAxMzExNzY1RjQ1MDA3NTc1NzMgLyogY3BwICovLAogCQkJCUJDMTExQjQ3MTEyRjYxNjkw
MDMzN0JBQiAvKiBtYWMgKi8sCisJCQkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFw
cGxpY2F0aW9uTWFuaWZlc3QuaCAqLywKIAkJCQkyRTVDNzcwRDFGQTdENDI5MDA1OTMyQzMgLyog
QVBJQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJMkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQ
SUF0dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0
b21hdGlvbkNsaWVudC5oICovLApAQCAtODQ2Miw2ICs4NDc0LDggQEAKIAkJCWZpbGVzID0gKAog
CQkJCTM3QTVFMDE0MThCQkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTYzMTA4Rjk2MUY5
NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0UgLyog
X1dLQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0MjkxOTYxRkE1OTQyQTAwMkND
OTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE0
QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04NTM3LDYgKzg1NTEsNyBAQAogCQkJCUExOUREM0MwMUQwN0QxNjgwMEFDODIzQiAv
KiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDc5MkQ4MTc2N0NDQTMwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxp
Y2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2OTcwMTFEQkU2MDMwMDY0
NTVCMCAvKiBBUElBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU1Qzc3MEUxRkE3RDQyOTAw
NTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzgxRDVEMUMy
MUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMTEwLDYgKzEwMTI1LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJCQk2MzEwOEY5NzFGOTY3MTlDMDBBMERC
ODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NDI5
MTk0MUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTkwRDI4QjIxQzY1MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTk3ODhBQ0MxRjQyMURFMjAwQzA4MDAwIC8qIF9XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggNzg2NmE3N2U4MzIuLmFiMGE1NmJlNDAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4NDAsNCArMTg0MCwxNSBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciwgU2hhcgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9u
TWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3sKKyAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZl
c3QoY2FsbGJhY2tJZGVudGlmaWVyLCBtYW5pZmVzdCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggNWEyMmYwZDc2NmEuLjI5MGQxYmJlZDNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjYyLDYgKzI2MiwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3Jl
OjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGlu
Z0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIq
KSBmaW5hbDsKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKKyNlbmRpZgorCiAg
ICAgV2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmll
dzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzMDIyOWJhM2E0Yy4uNTI3
MTRkMmUyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01ODg3LDQgKzU4ODcsMzIgQEAgUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVudD4g
V2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHIKIAogI2Vu
ZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCit2b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQoreworICAgIEFTU0VSVChjYWxsYmFja0lELmlzVmFsaWQoKSk7Cisg
ICAgRG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpOworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVEb2N1
bWVudCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CisKKyAgICBpZiAo
IWxvYWRlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFwcGxpY2F0
aW9uTWFuaWZlc3RDYWxsYmFjayhzdGQ6Om51bGxvcHQsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29yZUNhbGxiYWNrSUQgPSBsb2FkZXItPmxvYWRB
cHBsaWNhdGlvbk1hbmlmZXN0KCk7CisgICAgaWYgKCFjb3JlQ2FsbGJhY2tJRCkgeworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFj
ayhzdGQ6Om51bGxvcHQsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAuYWRkKGNvcmVDYWxsYmFj
a0lELCBjYWxsYmFja0lELnRvSW50ZWdlcigpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRGaW5p
c2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjb3JlQ2FsbGJhY2tJRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3Qp
Cit7CisgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIobV9hcHBs
aWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC50YWtlKGNvcmVDYWxsYmFja0lEKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJh
Y2sobWFuaWZlc3QsIGNhbGxiYWNrSUQpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM1MDVjOGFhZjIyLi4zMDg1NmQ0ODhhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODcsNiAr
ODcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVRvdWNoRXZlbnRJT1Mu
aD4KICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xMDMwLDYgKzEwMzQsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1l
LCBDYWxsYmFja0lEKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQorICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChDYWxsYmFja0lEKTsKKyAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90LCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKIApAQCAtMTY0NCw2ICsxNjUzLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hl
bWVIYW5kbGVyUHJveHlNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKGJvb2wgZ3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFw
OworCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIEhhc2hNYXA8dWludDY0
X3QsIHVpbnQ2NF90PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGZhZjRjY2JkYmY1
Li5mMmYxOGNiNTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTEsNCArNDkxLDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25z
KFN0cmluZyBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRp
b25zIG9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEF0dGFj
aG1lbnREYXRhQW5kQ29udGVudFR5cGUoU3RyaW5nIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CiAjZW5kaWYKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBHZXRBcHBs
aWNhdGlvbk1hbmlmZXN0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDlk
NzdiYzM0ZTcuLjIyNDE2NTlhOTk5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMTItMDEgIERhdmlkIFF1ZXNh
ZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFwcCBNYW5pZmVz
dF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRp
b25NYW5pZmVzdC5tbTogQWRkZWQuCisgICAgICAgICAgICBBZGRlZCB0d28gQVBJIHRlc3RzIGZv
ciBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICAgICAgLSBUZXN0aW5nIF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QncyBjb25mb3JtYW5jZSB0byBOU0NvZGluZy4KKyAgICAgICAgICAgIC0g
VGVzdGluZyAtW1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9u
SGFuZGxlcjpdLCB2ZXJpZnlpbmcgdGhlCisgICAgICAgICAgICAgIHZhbHVlcyBvZiB0aGUgcmVz
dWx0aW5nIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0UnVubmVyIG1l
dGhvZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbigpLCB1c2VkIGJ5IHRoZSBMYXlvdXRUZXN0
cworICAgICAgICAgICAgdG8gcmVxdWVzdCB0aGUgZG9jdW1lbnQgbG9hZCBpdHMgYXNzb2NpYXRl
ZCBtYW5pZmVzdC4gVGhlIGxheW91dCB0ZXN0cyBmb3JtZXJseSBjYWxsZWQKKyAgICAgICAgICAg
IGFuIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZlc3RUaGVuKCksIGJ1dCBJIGFkZGVk
ICdBcHBsaWNhdGlvbicgdG8gc29tZXdoYXQKKyAgICAgICAgICAgIGRpZmZlcmVudGlhdGUgdGhp
cyBmcm9tIHRoZSBhcHAgY2FjaGUgbWFuaWZlc3QuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbik6CisgICAgICAgIChXVFI6OlRl
c3RSdW5uZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIw
MTctMTItMDUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtidWlsZC53ZWJraXQub3JnXSBSZW5hbWUgTWFzdGVyQ2ZnVGVzdCB0byBSdW5XZWJLaXRUZXN0
c1Rlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzAwYzc3OGZhOWYuLjYwYmRlMmQyN2Qx
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYwLDYgKzI2MCw3IEBACiAJCTYzNTRGNEQx
MUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTRGNEQwMUY3QzNBQjUw
MEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLzsgfTsKIAkJNjM1NkZC
MjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTZGQjIxMUVDNEUwQkEwMDQ0QkYx
OCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi87IH07CiAJCTYzNjM1M0E3MUU5ODY2NUQwMDA5
RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNjM1M0E2MUU5
ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1s
ICovOyB9OworCQk2M0Y2NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVz
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRjY2
ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovOyB9OwogCQk2
QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzOEQ3RTUxQzc1MkQ1RjAwNEYx
NTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLzsgfTsKIAkJNzUxQjA1RDYxRjhFQUM0MTAwMjhB
MDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTFCMDVENTFGOEVBQzFBMDAyOEEwOUUgLyogRGF0YWJhc2VU
cmFja2VyVGVzdC5tbSAqLzsgfTsKIAkJNzU0Q0VDODExRjY3MjJGMjAwRDAwMzlBIC8qIEF1dG9G
aWxsQXZhaWxhYmxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tICov
OyB9OwpAQCAtMTQwMyw2ICsxNDA0LDcgQEAKIAkJNjM1NEY0RDAxRjdDM0FCNTAwRDg5REYzIC8q
IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYz
NTZGQjIxMUVDNEUwQkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBWaXNpYmxlQ29udGVudFJlY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTYzNjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJl
bnRQb3NpdGlvblJlc3VsdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gR2VvbG9j
YXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3NTFCMDVENTFGOEVBQzFBMDAyOEEwOUUgLyogRGF0YWJh
c2VUcmFja2VyVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFiYXNlVHJhY2tlclRl
c3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NENFQzgwMUY2NzIyREMwMEQw
MDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9G
aWxsQXZhaWxhYmxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTYwOTE3NzE5
MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZUFkZEltYWdlVG9D
YWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDIsNiArMjAwNCw3
IEBACiAJCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNz
QWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAogCQkJCUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAv
KiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5QzBC
RDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAorCQkJCTYzRjY2ODIwMUY5N0MzQUEw
MDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLAogCQkJCTc1NENFQzgwMUY2NzIy
REMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKIAkJCQkyREQzNTUzNTFCRDA4
Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovLAogCQkJCTM3NEI3QTVF
MURGMzZFRUUwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gKi8sCkBAIC0zMjU2
LDYgKzMyNTksNyBAQAogCQkJCTdBOTA5QTdEMUQ4Nzc0ODAwMDdFMTBGOCAvKiBBZmZpbmVUcmFu
c2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8q
IEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERTcx
QUZFMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAw
NDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM4RTQ4
RDFCQzVDQjQ1MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNzEwYTc3YWFhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KQEAgLTAsMCAr
MSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVEICYmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0LCBBcHBsaWNh
dGlvbk1hbmlmZXN0Q29kaW5nKQoreworICAgIGF1dG8ganNvblN0cmluZyA9IEAieyBcIm5hbWVc
IjogXCJUZXN0TmFtZVwiLCBcInNob3J0X25hbWVcIjogXCJUZXN0U2hvcnROYW1lXCIsIFwiZGVz
Y3JpcHRpb25cIjogXCJUZXN0RGVzY3JpcHRpb25cIiwgXCJzY29wZVwiOiBcImh0dHBzOi8vdGVz
dC5jb20vYXBwXCIsIFwic3RhcnRfdXJsXCI6IFwiaHR0cHM6Ly90ZXN0LmNvbS9hcHAvaW5kZXgu
aHRtbFwiIH0iOworICAgIFJldGFpblB0cjxfV0tBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVz
dCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjpq
c29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0
LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3Rlc3QuY29tLyJdXSB9OworICAgIAorICAgIG1hbmlmZXN0ID0gW05TS2V5ZWRVbmFy
Y2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOltOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWRE
YXRhV2l0aFJvb3RPYmplY3Q6bWFuaWZlc3QuZ2V0KCldXTsKKyAgICAKKyAgICBFWFBFQ1RfVFJV
RShbbWFuaWZlc3QgaXNLaW5kT2ZDbGFzczpbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBjbGFzc11d
KTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3ROYW1lIiwgbWFuaWZlc3QuZ2V0KCkubmFtZS5VVEY4
U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3RTaG9ydE5hbWUiLCBtYW5pZmVzdC5nZXQo
KS5zaG9ydE5hbWUuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJUZXN0RGVzY3JpcHRp
b24iLCBtYW5pZmVzdC5nZXQoKS5hcHBsaWNhdGlvbkRlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwor
ICAgIEVYUEVDVF9TVFJFUSgiaHR0cHM6Ly90ZXN0LmNvbS9hcHAiLCBtYW5pZmVzdC5nZXQoKS5z
Y29wZS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHBz
Oi8vdGVzdC5jb20vYXBwL2luZGV4Lmh0bWwiLCBtYW5pZmVzdC5nZXQoKS5zdGFydFVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKK30KKworVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFu
aWZlc3RCYXNpYykKK3sKKyAgICBzdGF0aWMgYm9vbCBkb25lID0gZmFsc2U7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U1plcm9SZWN0XSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
Il07CisgICAgW3dlYlZpZXcuZ2V0KCkgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAg
ICBFWFBFQ1RfTlVMTChtYW5pZmVzdCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVm
PVwiaW52YWxpZHVybDovL3BhdGhcIj4iXTsKKyAgICBbd2ViVmlldyBfZ2V0QXBwbGljYXRpb25N
YW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1h
bmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKG1hbmlmZXN0KTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0ID0gQHsgQCJuYW1lIjogQCJUZXN0
IiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1cImRhdGE6YXBw
bGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwiPiIsIFtbTlNK
U09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmplY3Qgb3B0aW9u
czowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdXV07CisgICAg
W3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6Xihf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShb
bWFuaWZlc3QubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJUZXN0Il0pOworICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNl
OworICAgIG1hbmlmZXN0T2JqZWN0ID0gQHsKKyAgICAgICAgQCJuYW1lIjogQCJBIFdlYiBBcHBs
aWNhdGlvbiIsCisgICAgICAgIEAic2hvcnRfbmFtZSI6IEAiV2ViQXBwIiwKKyAgICAgICAgQCJk
ZXNjcmlwdGlvbiI6IEAiSGVsbG8uIiwKKyAgICAgICAgQCJzdGFydF91cmwiOiBAImh0dHA6Ly9l
eGFtcGxlLmNvbS9hcHAvc3RhcnQiLAorICAgICAgICBAInNjb3BlIjogQCJodHRwOi8vZXhhbXBs
ZS5jb20vYXBwIiwKKyAgICB9OworICAgIE5TU3RyaW5nICpodG1sU3RyaW5nID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCI8bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOnRl
eHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRp
b24gZGF0YVdpdGhKU09OT2JqZWN0Om1hbmlmZXN0T2JqZWN0IG9wdGlvbnM6MCBlcnJvcjpuaWxd
IGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXV07CisgICAgW3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2V4YW1wbGUuY29tL2FwcC9pbmRleCJdXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RX
aXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkg
eworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3QubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJB
IFdlYiBBcHBsaWNhdGlvbiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LnNob3J0
TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJXZWJBcHAiXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtt
YW5pZmVzdC5hcHBsaWNhdGlvbkRlc2NyaXB0aW9uIGlzRXF1YWxUb1N0cmluZzpAIkhlbGxvLiJd
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LnN0YXJ0VVJMIGlzRXF1YWw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vYXBwL3N0YXJ0Il1dKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LnNjb3BlIGlzRXF1YWw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vZXhhbXBsZS5jb20vYXBwIl1dKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMzMyZmUyNjFjNmUuLmE4
YmM3Y2JmMjMwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMwNiw0ICszMDYsNiBA
QCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
cygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxi
YWNrKTsKKworICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4ob2JqZWN0IGNhbGxi
YWNrKTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGM5MzM5ZjAxZjMwLi41NmIwZGNkZGI1NCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI5OCw2ICsyOTgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3Qi
KSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJv
ZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVua25vd24iKSk7CiAg
ICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwg
ZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBjYjU2NzBiZTkxZC4uYWE5OGQw
Y2M1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtNjUyLDYgKzY1Miw3IEBAIGVudW0gewogICAgIFN0YXRpc3Rp
Y3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRDbGVhclRocm91
Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrSUQsCisgICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNr
SUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CiAKQEAgLTE4NzQsNCAr
MTg3NSwxNyBAQCB1aW50NjRfdCBUZXN0UnVubmVyOjpkb21DYWNoZVNpemUoSlNTdHJpbmdSZWYg
b3JpZ2luKQogICAgIHJldHVybiBXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0
UmVmPihyZXR1cm5EYXRhKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6Z2V0QXBwbGljYXRpb25N
YW5pZmVzdFRoZW4oSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJD
YWxsYmFjayhHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAg
IAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0QXBwbGljYXRpb25NYW5pZmVzdCIpKTsKKyAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCgpCit7CisgICAgY2Fs
bFRlc3RSdW5uZXJDYWxsYmFjayhHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBkMzY5MTBkMDMxZS4uZDY0NDk0MzE3Y2Eg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCkBAIC00MDUsNiArNDA1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7CiAgICAgdm9pZCBjYWxsRGlkUmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKKyAgICAKKyAgICB2b2lkIGdldEFwcGxpY2F0
aW9uTWFuaWZlc3RUaGVuKEpTVmFsdWVSZWYpOworICAgIHZvaWQgZGlkR2V0QXBwbGljYXRpb25N
YW5pZmVzdCgpOwogCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmNhN2U1MjNjYzIuLmFiMzRlNDQ2M2Fi
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTI0NSw2
ICsxMjQ1LDE5IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gcmVzdWx0KEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKGRvbUNhY2hlU2l6ZSkp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldEFwcGxpY2F0aW9uTWFuaWZlc3Qi
KSkgeworI2lmZGVmIF9fQkxPQ0tTX18KKyAgICAgICAgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5p
ZmVzdF9iKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCks
IF57CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEaWRHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0IikpOworICAgICAgICAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgfSk7CisjZWxzZQorICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpOworICAgICAgICAgICAgV0tQ
YWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyNlbmRpZgor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328531</attachid>
            <date>2017-12-05 17:15:10 -0800</date>
            <delta_ts>2017-12-06 10:54:37 -0800</delta_ts>
            <desc>Patch for landing (v2)</desc>
            <filename>0002-Web-App-Manifest-Add-SPI-for-fetching-the-manifest.patch</filename>
            <type>text/plain</type>
            <size>76173</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">RnJvbSA2MjA0ZjJkNzIwNjc0Yzk5OWQ0YzMxZTczYWExMTc2YWMxYTY2YjZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNv
bT4KRGF0ZTogRnJpLCAxNyBOb3YgMjAxNyAxMDowNDo1OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0gg
Mi81XSBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjk0IHJkYXI6Ly9w
cm9ibGVtLzM0NzQ3OTY4CgpSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KClNvdXJjZS9XZWJD
b3JlOgoKVGVzdDogYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbAoK
KiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgooV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZW5jb2RlIGNvbnN0KToKKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmRlY29kZSk6CiogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0Fw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgooV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eU5vdEFTdHJpbmcpOgooV2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRVUkwpOgogICAg
RHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5jZSB0aGUgd2FybmluZyBpcyBwcmVmaXhlZCB3
aXRoICJwYXJzaW5nCiAgICBhcHBsaWNhdGlvbiBtYW5pZmVzdDoiLCByZW1vdmUgYSByZWR1bmRh
bnQgdXNlIG9mICJhcHBsaWNhdGlvbiBtYW5pZmVzdCIuCgpTb3VyY2UvV2ViS2l0OgoKQWRkIGEg
bmV3IG1ldGhvZCAtW1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0
aW9uSGFuZGxlcjpdIHRvIHJlcXVlc3QKdGhlIG1hbmlmZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUg
Y3VycmVudCBwYWdlLgoKKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgoqIFNoYXJlZC9Db2NvYS9B
UElPYmplY3QubW06CihBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKiBVSVByb2Nlc3MvQVBJL0FQ
SUFwcGxpY2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KICAgIEFkZCBhIG5l
dyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlmZXN0cy4KKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcDoKKFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CiAgICBB
ZGQgYSBDIHZlcnNpb24gb2YgdGhpcyBTUEkgZm9yIFdlYktpdFRlc3RSdW5uZXIuCiogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgoqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgoqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5p
ZmVzdC5oLgoqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTog
QWRkZWQuCigtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKC1bX1dL
QXBwbGljYXRpb25NYW5pZmVzdCBlbmNvZGVXaXRoQ29kZXI6XSk6CigrW19XS0FwcGxpY2F0aW9u
TWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJMOmRvY3VtZW50
VVJMOl0pOgooLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IF9hcGlPYmplY3RdKToKKG51bGxhYmxl
TlNTdHJpbmcpOgooLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IG5hbWVdKToKKC1bX1dLQXBwbGlj
YXRpb25NYW5pZmVzdCBzaG9ydE5hbWVdKToKKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBs
aWNhdGlvbkRlc2NyaXB0aW9uXSk6CigtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2NvcGVdKToK
KC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBzdGFydFVSTF0pOgoqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0Lmgu
CihBUEk6OndyYXBwZXIpOgoqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgooV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayk6CihXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CiogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgoqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CiogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CiogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CihXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hl
ZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgooV2ViS2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKFdlYktpdDo6V2Vi
UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgoqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CgpUb29sczoKCiogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CiogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tOiBBZGRlZC4KICAgIEFkZGVkIHR3byBBUEkgdGVzdHMgZm9yIF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3Q6CiAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRpb25NYW5pZmVzdCdzIGNv
bmZvcm1hbmNlIHRvIE5TQ29kaW5nLgogICAgLSBUZXN0aW5nIC1bV0tXZWJWaWV3IF9nZXRBcHBs
aWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0sIHZlcmlmeWluZyB0aGUKICAg
ICAgdmFsdWVzIG9mIHRoZSByZXN1bHRpbmcgX1dLQXBwbGljYXRpb25NYW5pZmVzdC4KKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgoKKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsOgogICAgQWRkZWQgYSBuZXcgdGVzdFJ1bm5lciBtZXRob2QgZ2V0
QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oKSwgdXNlZCBieSB0aGUgTGF5b3V0VGVzdHMKICAgIHRv
IHJlcXVlc3QgdGhlIGRvY3VtZW50IGxvYWQgaXRzIGFzc29jaWF0ZWQgbWFuaWZlc3QuIFRoZSBs
YXlvdXQgdGVzdHMgZm9ybWVybHkgY2FsbGVkCiAgICBhbiB1bmltcGxlbWVudGVkIGZ1bmN0aW9u
IGdldE1hbmlmZXN0VGhlbigpLCBidXQgSSBhZGRlZCAnQXBwbGljYXRpb24nIHRvIHNvbWV3aGF0
CiAgICBkaWZmZXJlbnRpYXRlIHRoaXMgZnJvbSB0aGUgYXBwIGNhY2hlIG1hbmlmZXN0LgoKKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKFdUUjo6
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgooV1RSOjpUZXN0UnVubmVyOjpnZXRB
cHBsaWNhdGlvbk1hbmlmZXN0VGhlbik6CihXVFI6OlRlc3RSdW5uZXI6OmRpZEdldEFwcGxpY2F0
aW9uTWFuaWZlc3QpOgoqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oOgoqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgooV1RSOjpUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6
CgpMYXlvdXRUZXN0czoKCiogVGVzdEV4cGVjdGF0aW9uczoKICAgIFNraXAgdGhlIGFwcCBtYW5p
ZmVzdC1yZWxhdGVkIGxheW91dCB0ZXN0cyBmb3Igbm93IHdoaWxlIHRoZSBmZWF0dXJlIGlzIHN0
aWxsIGRpc2FibGVkLgogICAgQWxzbyBtb3ZlZCB0aGUgZXhwZWN0YXRpb25zIGRpc2FibGluZyB0
aGUgbWFuaWZlc3Qtc3JjIGxheW91dCB0ZXN0cyAod2hpY2ggbm93IHBhc3MKICAgIHdoZW4gdGhl
IGZlYXR1cmUgaXMgZW5hYmxlZCkgdG8gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGZpbGUuCiog
YXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sOiBBZGRlZC4K
KiBhcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CiogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy5odG1sOiBBZGRlZC4KICAgIEFk
ZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSBvbmx5IHRoZSBmaXJzdCBtYW5pZmVzdCBsaW5rIGlz
IGxvYWRlZCB3aGVuIHRoZXJlCiAgICBhcmUgbXVsdGlwbGUgb24gdGhlIHBhZ2UuCiogYXBwbGlj
YXRpb25tYW5pZmVzdC9yZXNvdXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0OiBBZGRl
ZC4KICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSB0aGF0IHdhcm5pbmdzIGdlbmVyYXRl
ZCB3aGlsZSBwYXJzaW5nIHRoZSBtYW5pZmVzdCBhcmUKICAgIGxvZ2dlZCB0byB0aGUgY29uc29s
ZS4KKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1z
cmMtYWxsb3dlZC5odG1sOgogICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkg
d2l0aCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbigpLgoqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dDoK
ICAgIFVwZGF0ZWQgdGhlIGV4cGVjdGVkIGNvbnNvbGUgbWVzc2FnZSB0byByZWZsZWN0IHRoZSBj
dXJyZW50IHdvcmRpbmcgZm9yIENTUCB2aW9sYXRpb25zLgoqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWw6CiAgICBSZXBs
YWNlZCBjYWxscyB0byBnZXRNYW5pZmVzdFRoZW4oKSB3aXRoIGdldEFwcGxpY2F0aW9uTWFuaWZl
c3RUaGVuKCkuCiogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFu
aWZlc3QudGVzdC9tYW5pZmVzdC5qc29uOgogICAgUmVtb3ZlZCBhIHRyYWlsaW5nIG5ld2xpbmUg
dGhhdCB3YXMgY2F1c2luZyBKU09OIHBhcnNpbmcgdG8gZmFpbC4KLS0tCiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKysrCiBMYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogLi4u
L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQgICAgICAgICAgICAgICAgfCAgIDQgKwog
Li4uL2FwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwgICAgfCAgMTEg
KysKIC4uLi9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQgICAgICAgICAgICAgICAgICAgIHwg
ICA4ICsKIC4uLi9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0bWwgICAgICAg
IHwgIDExICsrCiAuLi4vcmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdCAgICAg
ICAgICB8ICAgNCArCiAuLi4vbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMiArLQogLi4uL21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dCAg
ICAgICAgICAgICAgfCAgIDMgKy0KIC4uLi9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vbWFuaWZlc3QudGVzdC9tYW5pZmVzdC5qc29u
ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTkgKysrCiAuLi4vYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmggICAgICB8ICAyOSArKysrCiAuLi4vQXBwbGljYXRpb25N
YW5pZmVzdFBhcnNlci5jcHAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTIgKysrKysrKwogU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oICAgICAgICAgICAgICAgfCAgIDMgKwog
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tICAgICAgICAgICAgfCAgMTAg
KysKIC4uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggIHwg
IDU0ICsrKysrKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgICAg
ICAgICAgIHwgIDE0ICsrCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2
YXRlLmggICAgICB8ICAgNSArCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tICAgICB8ICAyMyArKysKIC4uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmggIHwgICAzICsKIC4uLi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaCAgIHwgIDUxICsrKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gIHwgMTYzICsrKysrKysrKysrKysrKysrKysr
KwogLi4uL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAgICAgfCAg
NjAgKysrKysrKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgICAg
ICAgICAgIHwgIDI1ICsrKysKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
ICAgICAgICAgICAgIHwgIDE0ICstCiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gICB8ICAgMyArCiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qICAgICB8ICAxNiArKwogLi4uL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCAgICAgICAgfCAgMTEgKysKIC4uLi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oICAgICAgICAgIHwgICA0ICsKIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgIHwgIDI4ICsrKysKIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCAgICAgICAgIHwgIDEzICsrCiAuLi4vV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluICB8ICAgNCArCiBUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMSArKysrCiAu
Li4vVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qICAgICAgICB8ICAgNCAr
CiAuLi4vVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbSAgICAgICB8IDEw
NyArKysrKysrKysrKysrKwogLi4uL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsICAgICAgICAgfCAgIDIgKwogLi4uL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cCAgICAgICAgICAgICAgfCAgIDUgKwogLi4uL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAgfCAgMTQgKysKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIHwgICAzICsKIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwICAgICAgICAgIHwgIDEzICsrCiA0MiBmaWxlcyBjaGFuZ2VkLCA4NjIg
aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZl
bG9wZXItd2FybmluZ3MuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FwcGxp
Y2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAx
MDA2NDQgTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy5odG1s
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9yZXNv
dXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNh
dGlvbk1hbmlmZXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0
SW50ZXJuYWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbQoKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZGJhZDk5M2I1ZC4u
NmMyOTVhMjk5OWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNy0xMi0wMSAgRGF2aWQgUXVl
c2FkYSAgPGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlm
ZXN0XSBBZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI5NAorICAgICAgICByZGFyOi8vcHJv
YmxlbS8zNDc0Nzk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisg
ICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIFNraXAgdGhlIGFwcCBtYW5p
ZmVzdC1yZWxhdGVkIGxheW91dCB0ZXN0cyBmb3Igbm93IHdoaWxlIHRoZSBmZWF0dXJlIGlzIHN0
aWxsIGRpc2FibGVkLgorICAgICAgICAgICAgQWxzbyBtb3ZlZCB0aGUgZXhwZWN0YXRpb25zIGRp
c2FibGluZyB0aGUgbWFuaWZlc3Qtc3JjIGxheW91dCB0ZXN0cyAod2hpY2ggbm93IHBhc3MKKyAg
ICAgICAgICAgIHdoZW4gdGhlIGZlYXR1cmUgaXMgZW5hYmxlZCkgdG8gdGhlIHNhbWUgbG9jYXRp
b24gaW4gdGhlIGZpbGUuCisgICAgICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXIt
d2FybmluZ3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhcHBsaWNhdGlvbm1hbmlm
ZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhcHBsaWNhdGlv
bm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
ICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSBvbmx5IHRoZSBmaXJzdCBtYW5pZmVzdCBs
aW5rIGlzIGxvYWRlZCB3aGVuIHRoZXJlCisgICAgICAgICAgICBhcmUgbXVsdGlwbGUgb24gdGhl
IHBhZ2UuCisgICAgICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9yZXNvdXJjZXMvZGV2ZWxvcGVy
LXdhcm5pbmdzLm1hbmlmZXN0OiBBZGRlZC4KKyAgICAgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHdhcm5pbmdzIGdlbmVyYXRlZCB3aGlsZSBwYXJzaW5nIHRoZSBtYW5p
ZmVzdCBhcmUKKyAgICAgICAgICAgIGxvZ2dlZCB0byB0aGUgY29uc29sZS4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxs
b3dlZC5odG1sOgorICAgICAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVu
KCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbigpLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgICAgIFVwZGF0ZWQgdGhlIGV4cGVjdGVkIGNvbnNvbGUgbWVz
c2FnZSB0byByZWZsZWN0IHRoZSBjdXJyZW50IHdvcmRpbmcgZm9yIENTUCB2aW9sYXRpb25zLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlm
ZXN0LXNyYy1ibG9ja2VkLmh0bWw6CisgICAgICAgICAgICBSZXBsYWNlZCBjYWxscyB0byBnZXRN
YW5pZmVzdFRoZW4oKSB3aXRoIGdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKCkuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3QudGVz
dC9tYW5pZmVzdC5qc29uOgorICAgICAgICAgICAgUmVtb3ZlZCBhIHRyYWlsaW5nIG5ld2xpbmUg
dGhhdCB3YXMgY2F1c2luZyBKU09OIHBhcnNpbmcgdG8gZmFpbC4KKwogMjAxNy0xMi0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFz
ZWxpbmUgc2VydmljZSB3b3JrZXIgdGVzdCBhZnRlciByMjI1NTQ5LgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggODNkZmMxMTM5ZTEuLmUwOWRmNTQ4NjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEw
ODQsOCArMTA4NCw2IEBAIHdlYmtpdC5vcmcvYi8xMTE4NjkgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvZXZhbC1ibG9ja2VkLWFuZC1zCiB3ZWJraXQub3JnL2IvMTUz
MTQ4IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2V2YWwtYWxsb3dl
ZC1pbi1yZXBvcnQtb25seS1tb2RlLWFuZC1zZW5kcy1yZXBvcnQucGhwCiB3ZWJraXQub3JnL2Iv
MTUzMTUwIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9jaGls
ZC1zcmMvZnJhbWUtZmlyZXMtbG9hZC1ldmVudC13aGVuLWJsb2NrZWQuaHRtbAogd2Via2l0Lm9y
Zy9iLzE1MzE1MCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEv
Y2hpbGQtc3JjL2ZyYW1lLWZpcmVzLWxvYWQtZXZlbnQtd2hlbi1yZWRpcmVjdC1ibG9ja2VkLmh0
bWwKLXdlYmtpdC5vcmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCAjIE5lZWRzIHRlc3RSdW5uZXIuZ2V0
TWFuaWZlc3RUaGVuKCkKLXdlYmtpdC5vcmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbCAjIE5lZWRzIHRl
c3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVuKCkKIHdlYmtpdC5vcmcvYi8xNTMxNTUgaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3NjcmlwdGhhc2gtYmFzaWMtYmxv
Y2tlZC1lcnJvci1ldmVudC5odG1sCiB3ZWJraXQub3JnL2IvMTUzMTU1IGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtYmFzaWMtYmxvY2tlZC1l
cnJvci1ldmVudC5odG1sCiB3ZWJraXQub3JnL2IvMTUzMTU1IGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zdHlsZWhhc2gtc3ZnLXN0eWxlLWJhc2ljLWJsb2Nr
ZWQtZXJyb3ItZXZlbnQuaHRtbApAQCAtMTYyNCwzICsxNjIyLDkgQEAgd2Via2l0Lm9yZy9iLzE3
OTI4NyBodHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0FuaW1hdGlvblRpbWVsaW5l
L2RvY3VtZW4KIHdlYmtpdC5vcmcvYi8xNzkyODcgaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvdGlt
aW5nLW1vZGVsL2FuaW1hdGlvbnMvc2V0LXRoZS1hbmltYXRpb24tc3RhcnQtdGltZS5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAogd2Via2l0Lm9yZy9iLzE3NzQ0MCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvb3JpZ2luL3JlbGF4aW5nLXRoZS1zYW1lLW9yaWdp
bi1yZXN0cmljdGlvbi9kb2N1bWVudF9kb21haW5fc2V0dGVyX251bGwudGVudGF0aXZlLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQorCisjIEFwcGxpY2F0aW9uIE1hbmlmZXN0IHRlc3RzCit3ZWJraXQu
b3JnL2IvMTUzMTUyIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21h
bmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNTMxNTIgaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2Nr
ZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE1ODIwNSBhcHBsaWNhdGlvbm1hbmlmZXN0
LyBbIFNraXAgXQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0
L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlv
bm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIzMjBmNDUyZTIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBQYXJzaW5nIGFwcGxpY2F0
aW9uIG1hbmlmZXN0IGRldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogVGhlIHZhbHVlIG9mICJz
dGFydF91cmwiIGlzIG5vdCBhIHZhbGlkIFVSTC4KK0NPTlNPTEUgTUVTU0FHRTogUGFyc2luZyBh
cHBsaWNhdGlvbiBtYW5pZmVzdCBkZXZlbG9wZXItd2FybmluZ3MubWFuaWZlc3Q6IFRoZSB2YWx1
ZSBvZiAibmFtZSIgaXMgbm90IGEgc3RyaW5nLgorQUxFUlQ6IFBhc3MKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbCBi
L0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNlNWJjNzdiZjZjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXIt
d2FybmluZ3MuaHRtbApAQCAtMCwwICsxLDExIEBACis8bGluayByZWw9Im1hbmlmZXN0IiBocmVm
PSJyZXNvdXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9u
TWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgeworICAgICAgICBhbGVydCgiUGFzcyIpOworICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9KTsKK30KKzwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzIy
M2U2ZGY0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK211bHRpcGxl
LWxpbmtzLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCit1cmxzY2hlbWU6Ly8xIC0gd2lsbFNlbmRS
ZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIHVybHNjaGVtZTovLzEsIG1haW4gZG9jdW1lbnQgVVJM
IG11bHRpcGxlLWxpbmtzLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAo
bnVsbCkKK3VybHNjaGVtZTovLzEgLSBkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjogPE5TRXJyb3Ig
ZG9tYWluIE5TVVJMRXJyb3JEb21haW4sIGNvZGUgLTEwMDIsIGZhaWxpbmcgVVJMICJ1cmxzY2hl
bWU6Ly8xIj4KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1ODQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFu
aWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uNzVkODAxMTc3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hcHBs
aWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGxp
bmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0idXJsc2NoZW1lOi8vMSIgbWVkaWE9InByaW50Ij4KKzxs
aW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9InVybHNjaGVtZTovLzIiPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNr
cygpOworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZ2V0QXBwbGlj
YXRpb25NYW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworCX0pOworfQorPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9yZXNvdXJjZXMvZGV2ZWxvcGVy
LXdhcm5pbmdzLm1hbmlmZXN0IGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9yZXNv
dXJjZXMvZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi42YTBiYjA4N2E3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5p
ZmVzdApAQCAtMCwwICsxLDQgQEAKK3sKKyAgICAibmFtZSI6IDAsCisgICAgInN0YXJ0X3VybCI6
ICJodHRwOj8iCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZl
c3Qtc3JjLWFsbG93ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwKaW5kZXggZGRiZDQ3
ZDI3ZTIuLmVmNWUxMGFlZGI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwKQEAgLTQsNyArNCw3IEBACiAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5nZXRNYW5p
ZmVzdFRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZ2V0QXBwbGljYXRpb25N
YW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBhbGVydCgiUGFzcyIpOwogICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IDcwNmI4ODVjNjU2Li4yZjY1MWM2ZDhlYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZl
c3Qtc3JjLWJsb2NrZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBsb2Fk
IG1hbmlmZXN0IGZyb20gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvbWFuaWZlc3QudGVzdC9tYW5pZmVzdC5qc29uJyBiZWNhdXNlIGl0IHZpb2xh
dGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAibWFu
aWZlc3Qtc3JjICdub25lJyIuCi0KK0NPTlNPTEUgTUVTU0FHRTogUmVmdXNlZCB0byBsb2FkIGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZl
c3QudGVzdC9tYW5pZmVzdC5qc29uIGJlY2F1c2UgaXQgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBt
YW5pZmVzdC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KIEFM
RVJUOiBQYXNzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1z
cmMtYmxvY2tlZC5odG1sCmluZGV4IGE3ZGY3MTQ2YmY0Li5jZDRkMWY3Yjg5NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sCkBA
IC00LDcgKzQsNyBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci0gICAgICAgIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgeworICAgICAg
ICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgYWxlcnQoIlBhc3MiKTsKICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbiBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21h
bmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbgppbmRleCBkYTZkY2Y4YjU4My4uN2ZlODg0ZDdhMDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbgorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50ZXN0L21h
bmlmZXN0Lmpzb24KQEAgLTEsNCArMSw0IEBACiB7CiAgICAgIm5hbWUiOiAiU3VwZXIgUmFjZXIg
MjAwMCIsCiAgICAgInN0YXJ0X3VybCI6ICIvc3RhcnQuaHRtbCIKLX0KK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGI4MmZjMjlkZmQuLjUyNzkyZWQ3YzI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTItMDEgIERhdmlkIFF1ZXNhZGEgIDxk
YXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRk
IFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzQ3
NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBU
ZXN0OiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sCisKKyAgICAg
ICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29kZSk6CisgICAgICAgICog
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZl
c3RQcm9wZXJ0eU5vdEFTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRVUkwpOgorICAgICAgICAgICAg
RHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5jZSB0aGUgd2FybmluZyBpcyBwcmVmaXhlZCB3
aXRoICJwYXJzaW5nCisgICAgICAgICAgICBhcHBsaWNhdGlvbiBtYW5pZmVzdDoiLCByZW1vdmUg
YSByZWR1bmRhbnQgdXNlIG9mICJhcHBsaWNhdGlvbiBtYW5pZmVzdCIuCisKIDIwMTctMTEtMTcg
IERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
IEFwcCBNYW5pZmVzdF0gU3VwcG9ydCBmZXRjaGluZyB0aGUgYXBwIG1hbmlmZXN0IApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0
aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggZWY5NjI2OTA5NjcuLmM3MGU3ZTYwYzkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBw
bGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRp
b25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw4ICszOCwz
NiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdCB7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9u
OwogICAgIFVSTCBzY29wZTsKICAgICBVUkwgc3RhcnRVUkw7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEFwcGxp
Y2F0aW9uTWFuaWZlc3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbmFtZSA8PCBzaG9ydE5hbWUgPDwgZGVzY3JpcHRpb24gPDwgc2NvcGUgPDwgc3Rh
cnRVUkw7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEFwcGxp
Y2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QgcmVzdWx0OworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubmFtZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvcnROYW1lKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kZXNjcmlwdGlv
bikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuc2NvcGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN0YXJ0VVJMKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlm
ZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA0NjdlNTY4MzE0YS4uMDk3MGE1
MjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5p
ZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAK
QEAgLTc5LDEyICs3OSwxMiBAQCBBcHBsaWNhdGlvbk1hbmlmZXN0IEFwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXI6OnBhcnNlTWFuaWZlc3QoY29uc3QgU3RyaW5nJiB0ZXh0LAogCiB2b2lkIEFwcGxp
Y2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5nKGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIGxvZ0RldmVsb3Blcldhcm5pbmcoIlRoZSBc
IiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgYXBwbGljYXRpb24gbWFuaWZlc3QgcHJvcGVydHkgaXMg
bm90IGEgc3RyaW5nLiIpOworICAgIGxvZ0RldmVsb3Blcldhcm5pbmcoIlRoZSB2YWx1ZSBvZiBc
IiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgaXMgbm90IGEgc3RyaW5nLiIpOwogfQogCiB2b2lkIEFw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIGxvZ0RldmVsb3Blcldhcm5pbmcoIlRo
ZSBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgYXBwbGljYXRpb24gbWFuaWZlc3QgcHJvcGVydHkg
aXMgbm90IGEgdmFsaWQgVVJMLiIpOworICAgIGxvZ0RldmVsb3Blcldhcm5pbmcoIlRoZSB2YWx1
ZSBvZiBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgaXMgbm90IGEgdmFsaWQgVVJMLiIpOwogfQog
CiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVsb3Blcldhcm5pbmcoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MWJjNTJjY2UzNy4uNDllMjViNjIyY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTItMDEgIERhdmlkIFF1ZXNhZGEgIDxk
YXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRk
IFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMzQ3
NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBB
ZGQgYSBuZXcgbWV0aG9kIC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENv
bXBsZXRpb25IYW5kbGVyOl0gdG8gcmVxdWVzdAorICAgICAgICB0aGUgbWFuaWZlc3QgYXNzb2Np
YXRlZCB3aXRoIHRoZSBjdXJyZW50IHBhZ2UuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9i
amVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChB
UEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUFwcGxp
Y2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
aWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KKyAgICAgICAgICAgIEFkZCBh
IG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlmZXN0cy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldEFwcGxpY2F0
aW9uTWFuaWZlc3RfYik6CisgICAgICAgICAgICBBZGQgYSBDIHZlcnNpb24gb2YgdGhpcyBTUEkg
Zm9yIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZl
c3QvQXBwbGljYXRpb25NYW5pZmVzdC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25N
YW5pZmVzdCBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgrW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJMOmRvY3VtZW50VVJM
Ol0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKG51bGxhYmxlTlNTdHJpbmcpOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0IG5hbWVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBzaG9ydE5hbWVd
KToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBsaWNhdGlvbkRlc2NyaXB0
aW9uXSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2NvcGVdKToKKyAgICAg
ICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBzdGFydFVSTF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlv
bk1hbmlmZXN0LmguCisgICAgICAgIChBUEk6OndyYXBwZXIpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxp
Y2F0aW9uTWFuaWZlc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1h
bmlmZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTctMTItMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggY3Jh
c2ggd2hlbiBsb2FkaW5nIGEgZmlsZSBVUkwgdGhhdCBkb2VzIG5vdCBoYXZlIGEgZmlsZVN5c3Rl
bVBhdGggcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRl
eCBmMDc0MTRjODdhOS4uNzU1NzJhNmRiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKQEAgLTk3LDYgKzk3LDkgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gVUlQ
cm9jZXNzIHR5cGVzCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLAorI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICAgICAgQXBwbGljYXRpb25NYW5pZmVzdCwKKyNl
bmRpZgogICAgICAgICBBdHRhY2htZW50LAogICAgICAgICBBdXRvbWF0aW9uU2Vzc2lvbiwKICAg
ICAgICAgQmFja0ZvcndhcmRMaXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCmluZGV4IGRmYmE5ZmQ5NGYxLi5jNzViMjMxNDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbQpAQCAtODEsNiArODEsMTAgQEAKICNpbXBvcnQgIl9XS1VzZXJT
dHlsZVNoZWV0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5h
bC5oIgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2ltcG9ydCAiX1dLQXBw
bGljYXRpb25NYW5pZmVzdEludGVybmFsLmgiCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVf
dCBtaW5pbXVtT2JqZWN0QWxpZ25tZW50ID0gODsKIHN0YXRpY19hc3NlcnQobWluaW11bU9iamVj
dEFsaWdubWVudCA+PSBhbGlnbm9mKHZvaWQqKSwgIk9iamVjdHMgc2hvdWxkIGFsd2F5cyBiZSBh
dCBsZWFzdCBwb2ludGVyLWFsaWduZWQuIik7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1F
eHRyYVNwYWNlRm9yQWxpZ25tZW50ID0gbWluaW11bU9iamVjdEFsaWdubWVudCAtIGFsaWdub2Yo
dm9pZCopOwpAQCAtMTE5LDYgKzEyMywxMiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXpl
X3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgIC8vIEFQSTo6T2JqZWN0LCBzbyB0aGV5IGFyZSBhbGxv
Y2F0ZWQgdXNpbmcgK2FsbG9jLgogCiAgICAgc3dpdGNoICh0eXBlKSB7CisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorICAgIGNhc2UgVHlwZTo6QXBwbGljYXRpb25NYW5pZmVzdDoK
KyAgICAgICAgd3JhcHBlciA9IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFsbG9jXTsKKyAgICAg
ICAgYnJlYWs7CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6QXJyYXk6CiAgICAgICAgIHdyYXBw
ZXIgPSBbV0tOU0FycmF5IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQzMzE0OGJmNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5o
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgor
CituYW1lc3BhY2UgQVBJIHsKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2Ns
YXNzIEFwcGxpY2F0aW9uTWFuaWZlc3QgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6
OlR5cGU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFw
cGxpY2F0aW9uTWFuaWZlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQXBwbGljYXRpb25NYW5pZmVzdChhcHBsaWNhdGlvbk1hbmlmZXN0KSk7CisgICAgfQor
CisgICAgZXhwbGljaXQgQXBwbGljYXRpb25NYW5pZmVzdChjb25zdCBXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgICAgICA6IG1fYXBwbGljYXRp
b25NYW5pZmVzdChhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgIHsKKyAgICB9CisKKyAgICBjb25z
dCBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CisKK3ByaXZhdGU6CisgICAgV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdCBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7Cit9OworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAppbmRleCBmMjI0NGQ3NDM3NC4uMzJlNGY0YWZkYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjc2MCwzICsyNzYwLDE3IEBAIFByb2Nl
c3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2UpLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQorCisjaWZkZWYgX19C
TE9DS1NfXwordm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdlUmVmIHBh
Z2UsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykKK3sKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgdG9JbXBsKHBhZ2UpLT5nZXRBcHBsaWNhdGlv
bk1hbmlmZXN0KFtibG9ja10oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0PiAmbWFuaWZlc3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgYmxv
Y2soKTsKKyAgICB9KTsKKyNlbHNlIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAg
ICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgYmxvY2soKTsKKyNlbmRpZiAvLyBub3QgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKaW5kZXggMGRmODM2NDg5NGUuLmJiMjZkZThhYmYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBA
IC0xNzgsNiArMTc4LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9y
dFNjYWxlTGltaXRzKFdLUGFnZVJlZiBwYWdlLCBib29sIGlnbm9yZXNWCiAKIFdLX0VYUE9SVCBX
S1Byb2Nlc3NJRCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSk7CiAK
KyNpZmRlZiBfX0JMT0NLU19fCit0eXBlZGVmIHZvaWQgKF5XS1BhZ2VHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0QmxvY2spKHZvaWQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25N
YW5pZmVzdF9iKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Qmxv
Y2sgYmxvY2spOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTQx
NmNkOGJkOC4uYTI5ZGJjYjFmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTE3LDYgKzExNywxMCBAQAogI2ltcG9ydCA8d3RmL3Nw
aS9kYXJ3aW4vZHlsZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2ltcG9ydCAiX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
ICNpbXBvcnQgIldLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIgogI2VuZGlmCkBAIC00MzQ0
LDYgKzQzNDgsMjUgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhDb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvcgogICAgIH0pOwogfQogCistICh2
b2lkKV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIF9wYWdlLT5nZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlm
ZXN0LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgVU5VU0VE
KGVycm9yKTsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBp
ZiAobWFuaWZlc3QpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFwaU1hbmlmZXN0ID0gQVBJOjpB
cHBsaWNhdGlvbk1hbmlmZXN0OjpjcmVhdGUoKm1hbmlmZXN0KTsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGFwaU1hbmlmZXN0KSk7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9Cisg
ICAgfSk7CisjZWxzZQorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKyNlbmRpZgorfQorCiAtIChfV0tQYWdpbmF0aW9uTW9kZSlfcGFn
aW5hdGlvbk1vZGUKIHsKICAgICBzd2l0Y2ggKF9wYWdlLT5wYWdpbmF0aW9uTW9kZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCA5NjZmYjliYTE5Yi4uNTdkODIyZjc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtOTYsNiAr
OTYsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2Vu
ZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0OwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RS
ZXN1bHQ7CiBAY2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKQEAgLTMwNyw2ICszMDgsOCBA
QCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClf
Z2V0V2ViQXJjaGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAq
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0
cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygx
MS4wKSk7CiAKKy0gKHZvaWQpX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKikpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFBhZ2luYXRpb25Nb2RlOikgX1dL
UGFnaW5hdGlvbk1vZGUgX3BhZ2luYXRpb25Nb2RlOwogLy8gV2hldGhlciB0aGUgY29sdW1uLWJy
ZWFrLXtiZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMgYXJlIHJlc3BlY3RlZCBpbnN0ZWFkIG9mIHRo
ZQogLy8gcGFnZS1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9wZXJ0aWVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxYzUwZjJiZTEw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgOiBO
U09iamVjdCA8TlNDb2Rpbmc+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVs
bGFibGUsIGNvcHkpIE5TU3RyaW5nICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnNob3J0TmFtZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICphcHBsaWNhdGlvbkRl
c2NyaXB0aW9uOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29w
eSkgTlNVUkwgKnNjb3BlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U1VSTCAqc3RhcnRVUkw7CisKKysgKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlv
bk1hbmlmZXN0RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBtYW5pZmVzdFVSTDooTlNVUkwgKilt
YW5pZmVzdFVSTCBkb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKilkb2N1bWVudFVSTDsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi44NjQ1YWM0YjcxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC0wLDAgKzEsMTYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPFdl
YkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKK3sKKyAgICBOU1N0cmluZyAqbmFt
ZSA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RGb3JLZXk6QCJuYW1lIl07CisgICAgTlNTdHJpbmcg
KnNob3J0TmFtZSA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RGb3JLZXk6QCJzaG9ydF9uYW1lIl07
CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdEZvcktl
eTpAImRlc2NyaXB0aW9uIl07CisgICAgTlNVUkwgKnNjb3BlVVJMID0gW2FEZWNvZGVyIGRlY29k
ZU9iamVjdEZvcktleTpAInNjb3BlIl07CisgICAgTlNVUkwgKnN0YXJ0VVJMID0gW2FEZWNvZGVy
IGRlY29kZU9iamVjdEZvcktleTpAInN0YXJ0X3VybCJdOworCisgICAgV2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdCBjb3JlQXBwbGljYXRpb25NYW5pZmVzdCB7CisgICAgICAgIFdURjo6U3Ry
aW5nKG5hbWUpLAorICAgICAgICBXVEY6OlN0cmluZyhzaG9ydE5hbWUpLAorICAgICAgICBXVEY6
OlN0cmluZyhkZXNjcmlwdGlvbiksCisgICAgICAgIFdlYkNvcmU6OlVSTChzY29wZVVSTCksCisg
ICAgICAgIFdlYkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICB9OworCisgICAgQVBJOjpPYmplY3Q6
OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KHNlbGYsIFdURk1v
dmUoY29yZUFwcGxpY2F0aW9uTWFuaWZlc3QpKTsKKworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfYXBwbGljYXRpb25NYW5pZmVzdC0+fkFwcGxpY2F0aW9u
TWFuaWZlc3QoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZCllbmNvZGVX
aXRoQ29kZXI6KE5TQ29kZXIgKilhQ29kZXIKK3sKKyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpz
ZWxmLm5hbWUgZm9yS2V5OkAibmFtZSJdOworICAgIFthQ29kZXIgZW5jb2RlT2JqZWN0OnNlbGYu
c2hvcnROYW1lIGZvcktleTpAInNob3J0X25hbWUiXTsKKyAgICBbYUNvZGVyIGVuY29kZU9iamVj
dDpzZWxmLmFwcGxpY2F0aW9uRGVzY3JpcHRpb24gZm9yS2V5OkAiZGVzY3JpcHRpb24iXTsKKyAg
ICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLnNjb3BlIGZvcktleTpAInNjb3BlIl07CisgICAg
W2FDb2RlciBlbmNvZGVPYmplY3Q6c2VsZi5zdGFydFVSTCBmb3JLZXk6QCJzdGFydF91cmwiXTsK
K30KKworKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9t
SlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJMIGRv
Y3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJMCit7CisgICAgYXV0byBtYW5pZmVzdCA9IFdl
YkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpzb24p
LCBXZWJDb3JlOjpVUkwobWFuaWZlc3RVUkwpLCBXZWJDb3JlOjpVUkwoZG9jdW1lbnRVUkwpKTsK
KyAgICByZXR1cm4gW0FQSTo6d3JhcHBlcihBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0
ZShtYW5pZmVzdCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKEFQSTo6T2JqZWN0
JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfYXBwbGljYXRpb25NYW5pZmVzdDsKK30KKwor
c3RhdGljIE5TU3RyaW5nICpudWxsYWJsZU5TU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJp
bmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5pc051bGwoKSA/IG5pbCA6IChOU1N0cmluZyAqKXN0
cmluZzsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIG51bGxhYmxlTlNT
dHJpbmcoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5uYW1lKTsK
K30KKworLSAoTlNTdHJpbmcgKilzaG9ydE5hbWUKK3sKKyAgICByZXR1cm4gbnVsbGFibGVOU1N0
cmluZyhfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLnNob3J0TmFt
ZSk7Cit9CisKKy0gKE5TU3RyaW5nICopYXBwbGljYXRpb25EZXNjcmlwdGlvbgoreworICAgIHJl
dHVybiBudWxsYWJsZU5TU3RyaW5nKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1h
bmlmZXN0KCkuZGVzY3JpcHRpb24pOworfQorCistIChOU1VSTCAqKXNjb3BlCit7CisgICAgcmV0
dXJuIF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkuc2NvcGU7Cit9
CisKKy0gKE5TVVJMICopc3RhcnRVUkwKK3sKKyAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZl
c3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5zdGFydFVSTDsKK30KKworI2Vsc2UgLy8gRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisrIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBw
bGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5T
VVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDb2RlcjooTlNDb2RlciAqKWFEZWNvZGVyCit7CisgICAgVU5VU0VEKGFEZWNvZGVyKTsK
KyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAq
KWFDb2RlcgoreworICAgIFVOVVNFRChhQ29kZXIpOworfQorCistIChOU1N0cmluZyAqKW5hbWUK
K3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1N0cmluZyAqKXNob3J0TmFtZQoreworICAg
IHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopYXBwbGljYXRpb25EZXNjcmlwdGlvbgor
eworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TVVJMICopc2NvcGUKK3sKKyAgICByZXR1cm4g
bmlsOworfQorCistIChOU1VSTCAqKXN0YXJ0VVJMCit7CisgICAgcmV0dXJuIG5pbDsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworQGVuZAorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmI4Nzg4NmMxNjUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRp
b25NYW5pZmVzdEludGVybmFsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElf
RU5BQkxFRAorCisjaW1wb3J0ICJBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW1wb3J0ICJf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFu
aWZlc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZl
c3Q7Cit9CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCituYW1lc3BhY2UgQVBJ
IHsKKworaW5saW5lIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKndyYXBwZXIoQVBJOjpBcHBsaWNh
dGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQoreworICAgIEFTU0VSVChbYXBwbGlj
YXRpb25NYW5pZmVzdC53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXBwbGljYXRpb25NYW5p
ZmVzdCBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilhcHBs
aWNhdGlvbk1hbmlmZXN0LndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJmYWNlIF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0
U3RvcmFnZTxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IF9hcHBsaWNhdGlvbk1hbmlmZXN0Owor
fQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKyNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggYmJiOGEyNzg1OGQuLmNkODk5YTY4NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUzMTMsNiArNTMxMywxNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwg
Q2FsbGJhY2tJRCBjYQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFs
dWUocmFuZ2UpOwogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordm9pZCBX
ZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdE9yTnVsbCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtl
PEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxs
YmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dp
dGhSZXR1cm5WYWx1ZShtYW5pZmVzdE9yTnVsbCk7Cit9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JN
KENPQ09BKQogdm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBN
YWNoU2VuZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKQEAgLTcy
MjQsNCArNzIzNSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlQXR0YWNobWVudChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordm9pZCBXZWJQYWdl
UHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkgeworICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKHN0ZDo6bnVsbG9wdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDI5Mzg4OWZjZjMyLi4zZWJmMjFmYTdlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTcsNiArMTU3LDcgQEAg
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNsYXNzIFZhbGlkYXRp
b25CdWJibGU7CiAKK3N0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0Owogc3RydWN0IERpY3Rpb25h
cnlQb3B1cEluZm87CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGaWxlQ2hvb3Nl
clNldHRpbmdzOwpAQCAtMjY1LDYgKzI2NiwxMCBAQCBzdHJ1Y3QgUXVldWVkVG91Y2hFdmVudHMg
ewogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdD4g
VmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gUmVjdEZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2s7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit0eXBlZGVm
IEdlbmVyaWNDYWxsYmFjazxjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3Q+Jj4gQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrOworI2VuZGlmCisKICNpZiBQ
TEFURk9STShNQUMpCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBBdHRyaWJ1dGVkU3Ry
aW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBkb3Vi
bGUsIGJvb2w+IEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrOwpAQCAtMTI0Miw2ICsxMjQ3LDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBu
ZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2b2lkIGdldEFwcGxp
Y2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMTUwMiw2ICsxNTExLDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNrKHVpbnQ2NF90LCBD
YWxsYmFja0lEKTsKICAgICB2b2lkIGVkaXRpbmdSYW5nZUNhbGxiYWNrKGNvbnN0IEVkaXRpbmdS
YW5nZSYsIENhbGxiYWNrSUQpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAg
ICB2b2lkIGFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tJRCk7CisjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIG1hY2hTZW5kUmlnaHRDYWxsYmFjayhjb25zdCBXZWJD
b3JlOjpNYWNoU2VuZFJpZ2h0JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZWZhNWZjZWZl
Mi4uM2RiNTkzZmVkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KQEAgLTE2Nyw2ICsxNjcsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIEVkaXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdS
YW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgVW5zaWduZWRD
YWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKFdlYkNvcmU6OkludFJlY3QgcmVjdCwg
c3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgQXBw
bGljYXRpb25NYW5pZmVzdENhbGxiYWNrKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4gbWFuaWZlc3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJS
YW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcgc3RyaW5nLCBzdHJ1
Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmluZyBmb250TmFtZSwg
ZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250cywgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwNjQ1ZTdkMzZjYS4uZDczMDlmNjAxYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIyOCw2
ICsxMjI4LDEwIEBACiAJCTVDRTg1QjIwMUM4OEU2NEIwMDcwQkZDRSAvKiBQaW5nTG9hZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFODVCMUYxQzg4
RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi87IH07CiAJCTVDRkVDQjA0MUUxRUQxQ0MwMEY4
ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRUNCMDMxRTFFRDFDODAwRjg4NTA0IC8q
IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAgKi87IH07CiAJCTYxN0E1MkQ4MUY0M0E5
REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcx
RjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CisJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTYzMTA4Rjk3
MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTUxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi87IH07CisJCTYzMTA4Rjk5MUY5Njcx
RjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEw
REI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKKwkJNjM0ODQy
NTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRGMUZCMjZFNzEwMDk0
NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CiAJCTYzNjM1M0E1MUU5ODU4
REYwMDA5RjhBRiAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0ZBQkUxOTFFOTcwRDY1
MDAzMDExRDUgLyogX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzQzMyQzI1MUU5ODEw
RDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQwIC8q
IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gKi87IH07CiAJCTYzQzMyQzI2MUU5ODEwRDkwMDY5
OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNDFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zNjE4LDYgKzM2MjIsMTAgQEAKIAkJNUQ0NDJBNTUxNkQ1ODU2NzAwQUMz
MzMxIC8qIFBsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSBQbHVnaW5TZXJ2aWNl
LmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDczRjExMTZG
RjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAv
KiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXBw
bGljYXRpb25NYW5pZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjMxMDhG
OTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxp
Y2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXBwbGljYXRpb25NYW5pZmVzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2M0MzMkMyMzFFOTgxMEQ5MDA2OTlCRDAg
LyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBv
c2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9u
UG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjNDMzJDMjcxRTk4MTE5
MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3OTUsNiArNTgwMyw5IEBACiAJCQkJMzdB
NUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJ
CQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1t
ICovLAogCQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mb0ludGVybmFsLmggKi8sCisJCQkJNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaCAqLywKKwkJCQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyog
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk2MzEwOEY5ODFGOTY3MUY3MDBBMERC
ODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi8sCiAJCQkJRjQ0MjkxOTEx
RkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLywKIAkJCQlGNDQyOTE5MzFGQTU5
MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLywKIAkJCQlGNDQyOTE5NTFGQTU5NDJB
MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi8sCkBAIC03MTk1LDYgKzcyMDYs
NyBAQAogCQkJCTM3QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAqLywKIAkJCQlCQzhB
NTAxMzExNzY1RjQ1MDA3NTc1NzMgLyogY3BwICovLAogCQkJCUJDMTExQjQ3MTEyRjYxNjkwMDMz
N0JBQiAvKiBtYWMgKi8sCisJCQkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxp
Y2F0aW9uTWFuaWZlc3QuaCAqLywKIAkJCQkyRTVDNzcwRDFGQTdENDI5MDA1OTMyQzMgLyogQVBJ
QXR0YWNobWVudC5jcHAgKi8sCiAJCQkJMkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0
dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21h
dGlvbkNsaWVudC5oICovLApAQCAtODQ2Miw2ICs4NDc0LDggQEAKIAkJCWZpbGVzID0gKAogCQkJ
CTM3QTVFMDE0MThCQkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTYzMTA4Rjk2MUY5Njcx
OUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNF
IC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE0QzUx
QzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC04NTM3LDYgKzg1NTEsNyBAQAogCQkJCUExOUREM0MwMUQwN0QxNjgwMEFDODIzQiAvKiBf
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE4
MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3RDc5MkQ4MTc2N0NDQTMwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0
aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2OTcwMTFEQkU2MDMwMDY0NTVC
MCAvKiBBUElBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU1Qzc3MEUxRkE3RDQyOTAwNTkz
MkMzIC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzgxRDVEMUMyMUYz
OEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEw
MTEwLDYgKzEwMTI1LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlm
aWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJCQk2MzEwOEY5NzFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NDI5MTk0
MUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTkwRDI4QjIxQzY1MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTk3ODhBQ0MxRjQyMURFMjAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25T
ZXNzaW9uQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggNzg2NmE3N2U4MzIuLmFiMGE1NmJlNDAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4NDAsNCArMTg0MCwxNSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgU2hhcgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3sKKyAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qo
Y2FsbGJhY2tJZGVudGlmaWVyLCBtYW5pZmVzdCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNWEyMmYwZDc2NmEuLjI5MGQxYmJlZDNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtMjYyLDYgKzI2MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpM
aW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0lj
b24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIqKSBm
aW5hbDsKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKKyNlbmRpZgorCiAgICAg
V2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsK
ICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzMDIyOWJhM2E0Yy4uNTI3MTRk
MmUyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC01ODg3LDQgKzU4ODcsMzIgQEAgUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVudD4gV2Vi
UGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBTdHIKIAogI2VuZGlm
IC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCit2b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQoreworICAgIEFTU0VSVChjYWxsYmFja0lELmlzVmFsaWQoKSk7CisgICAg
RG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpOworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVEb2N1bWVu
dCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CisKKyAgICBpZiAoIWxv
YWRlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFwcGxpY2F0aW9u
TWFuaWZlc3RDYWxsYmFjayhzdGQ6Om51bGxvcHQsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gY29yZUNhbGxiYWNrSUQgPSBsb2FkZXItPmxvYWRBcHBs
aWNhdGlvbk1hbmlmZXN0KCk7CisgICAgaWYgKCFjb3JlQ2FsbGJhY2tJRCkgeworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhz
dGQ6Om51bGxvcHQsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAuYWRkKGNvcmVDYWxsYmFja0lE
LCBjYWxsYmFja0lELnRvSW50ZWdlcigpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hM
b2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjb3JlQ2FsbGJhY2tJRCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpCit7
CisgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVnZXIobV9hcHBsaWNh
dGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC50YWtlKGNvcmVDYWxsYmFja0lEKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2so
bWFuaWZlc3QsIGNhbGxiYWNrSUQpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDM1MDVjOGFhZjIyLi4zMDg1NmQ0ODhhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODcsNiArODcs
MTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oPgogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVRvdWNoRXZlbnRJT1MuaD4K
ICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xMDMwLDYgKzEwMzQsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBD
YWxsYmFja0lEKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQor
ICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChDYWxsYmFja0lEKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90LCBjb25zdCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKIApAQCAtMTY0NCw2ICsxNjUzLDEwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVI
YW5kbGVyUHJveHlNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKGJvb2wgZ3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwor
CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIEhhc2hNYXA8dWludDY0X3Qs
IHVpbnQ2NF90PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGZhZjRjY2JkYmY1Li5m
MmYxOGNiNTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTEsNCArNDkxLDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0QXR0YWNobWVudERpc3BsYXlPcHRpb25zKFN0
cmluZyBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERpc3BsYXlPcHRpb25z
IG9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFNldEF0dGFjaG1l
bnREYXRhQW5kQ29udGVudFR5cGUoU3RyaW5nIGlkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAj
ZW5kaWYKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBHZXRBcHBsaWNh
dGlvbk1hbmlmZXN0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmFkMGVj
NmU4ZmQuLmQ0YjhmYjk2OGFiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMTItMDEgIERhdmlkIFF1ZXNhZGEg
IDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0g
QWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAgICAgcmRhcjovL3Byb2JsZW0v
MzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25N
YW5pZmVzdC5tbTogQWRkZWQuCisgICAgICAgICAgICBBZGRlZCB0d28gQVBJIHRlc3RzIGZvciBf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICAgICAgLSBUZXN0aW5nIF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3QncyBjb25mb3JtYW5jZSB0byBOU0NvZGluZy4KKyAgICAgICAgICAgIC0gVGVz
dGluZyAtW1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpdLCB2ZXJpZnlpbmcgdGhlCisgICAgICAgICAgICAgIHZhbHVlcyBvZiB0aGUgcmVzdWx0
aW5nIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGw6CisgICAgICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0UnVubmVyIG1ldGhv
ZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbigpLCB1c2VkIGJ5IHRoZSBMYXlvdXRUZXN0cwor
ICAgICAgICAgICAgdG8gcmVxdWVzdCB0aGUgZG9jdW1lbnQgbG9hZCBpdHMgYXNzb2NpYXRlZCBt
YW5pZmVzdC4gVGhlIGxheW91dCB0ZXN0cyBmb3JtZXJseSBjYWxsZWQKKyAgICAgICAgICAgIGFu
IHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZlc3RUaGVuKCksIGJ1dCBJIGFkZGVkICdB
cHBsaWNhdGlvbicgdG8gc29tZXdoYXQKKyAgICAgICAgICAgIGRpZmZlcmVudGlhdGUgdGhpcyBm
cm9tIHRoZSBhcHAgY2FjaGUgbWFuaWZlc3QuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
UnVubmVyOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbik6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTct
MTItMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBGaXggY3Jhc2ggd2hlbiBsb2FkaW5nIGEgZmlsZSBVUkwgdGhhdCBkb2VzIG5vdCBoYXZl
IGEgZmlsZVN5c3RlbVBhdGggcmVwcmVzZW50YXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMzAwYzc3OGZhOWYuLjYwYmRlMmQyN2QxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjYwLDYgKzI2MCw3IEBACiAJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDYzNTRGNEQwMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcCAqLzsgfTsKIAkJNjM1NkZCMjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVD
b250ZW50UmVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDYzNTZGQjIxMUVDNEUwQkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi87
IH07CiAJCTYzNjM1M0E3MUU5ODY2NUQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQ
b3NpdGlvblJlc3VsdC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDYzNjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdl
dEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sICovOyB9OworCQk2M0Y2NjgyMjFGOTdGN0Y5MDAz
MkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tICovOyB9OwogCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFz
aENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0EzOEQ3RTUxQzc1MkQ1RjAwNEYxNTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLzsg
fTsKIAkJNzUxQjA1RDYxRjhFQUM0MTAwMjhBMDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTFCMDVENTFG
OEVBQzFBMDAyOEEwOUUgLyogRGF0YWJhc2VUcmFja2VyVGVzdC5tbSAqLzsgfTsKIAkJNzU0Q0VD
ODExRjY3MjJGMjAwRDAwMzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlB
IC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tICovOyB9OwpAQCAtMTQwMyw2ICsxNDA0LDcgQEAKIAkJ
NjM1NEY0RDAxRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzNTZGQjIxMUVDNEUwQkEwMDQ0QkYxOCAvKiBWaXNp
YmxlQ29udGVudFJlY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpYmxlQ29udGVudFJl
Y3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzNjM1M0E2MUU5ODYxOTQwMDA5
RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQu
aHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjNGNjY4MjAxRjk3QzNBQTAwMzJF
RTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBs
aWNhdGlvbk1hbmlmZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTFCMDVE
NTFGOEVBQzFBMDAyOEEwOUUgLyogRGF0YWJhc2VUcmFja2VyVGVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERhdGFiYXNlVHJhY2tlclRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1NENFQzgwMUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9GaWxsQXZhaWxhYmxlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTYwOTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVB
ZGRJbWFnZVRvQ2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIwMDIsNiArMjAwNCw3IEBACiAJCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAogCQkJ
CUExREY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMu
bW0gKi8sCiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1t
ICovLAorCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0
Lm1tICovLAogCQkJCTc1NENFQzgwMUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJs
ZS5tbSAqLywKIAkJCQkyREQzNTUzNTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVn
cmF0aW9uLm1tICovLAogCQkJCTM3NEI3QTVFMURGMzZFRUUwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0
aW5nRGVsZWdhdGUubW0gKi8sCkBAIC0zMjU2LDYgKzMyNTksNyBAQAogCQkJCTdBOTA5QTdEMUQ4
Nzc0ODAwMDdFMTBGOCAvKiBBZmZpbmVUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTJERTcxQUZFMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRl
ZFJlc2l6ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAv
KiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdD
M0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFQjQxQTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDREM4RTQ4RDFCQzVDQjQ1MDA1OTRGRUMgLyogQXVkaW9TZXNz
aW9uQ2F0ZWdvcnlJT1MubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzEwYTc3YWFhN2MKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxp
Y2F0aW9uTWFuaWZlc3QubW0KQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3Qu
aCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dl
YlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK1RFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0Q29kaW5nKQoreworICAgIGF1
dG8ganNvblN0cmluZyA9IEAieyBcIm5hbWVcIjogXCJUZXN0TmFtZVwiLCBcInNob3J0X25hbWVc
IjogXCJUZXN0U2hvcnROYW1lXCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0RGVzY3JpcHRpb25c
IiwgXCJzY29wZVwiOiBcImh0dHBzOi8vdGVzdC5jb20vYXBwXCIsIFwic3RhcnRfdXJsXCI6IFwi
aHR0cHM6Ly90ZXN0LmNvbS9hcHAvaW5kZXguaHRtbFwiIH0iOworICAgIFJldGFpblB0cjxfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFw
cGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjpqc29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QuY29tLyJdXSB9OworICAgIAor
ICAgIG1hbmlmZXN0ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRh
OltOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6bWFuaWZlc3QuZ2V0
KCldXTsKKyAgICAKKyAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3QgaXNLaW5kT2ZDbGFzczpbX1dL
QXBwbGljYXRpb25NYW5pZmVzdCBjbGFzc11dKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3ROYW1l
IiwgbWFuaWZlc3QuZ2V0KCkubmFtZS5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRl
c3RTaG9ydE5hbWUiLCBtYW5pZmVzdC5nZXQoKS5zaG9ydE5hbWUuVVRGOFN0cmluZyk7CisgICAg
RVhQRUNUX1NUUkVRKCJUZXN0RGVzY3JpcHRpb24iLCBtYW5pZmVzdC5nZXQoKS5hcHBsaWNhdGlv
bkRlc2NyaXB0aW9uLlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cHM6Ly90ZXN0
LmNvbS9hcHAiLCBtYW5pZmVzdC5nZXQoKS5zY29wZS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5n
KTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0dHBzOi8vdGVzdC5jb20vYXBwL2luZGV4Lmh0bWwiLCBt
YW5pZmVzdC5nZXQoKS5zdGFydFVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKK30KKwor
VEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RCYXNpYykKK3sKKyAgICBzdGF0aWMgYm9v
bCBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiIl07CisgICAgW3dlYlZpZXcuZ2V0KCkgX2dldEFw
cGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChtYW5pZmVzdCk7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBk
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
PGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiaW52YWxpZHVybDovL3BhdGhcIj4iXTsKKyAg
ICBbd2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpe
KF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9OVUxM
KG1hbmlmZXN0KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVu
KCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0
T2JqZWN0ID0gQHsgQCJuYW1lIjogQCJUZXN0IiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1c
Im1hbmlmZXN0XCIgaHJlZj1cImRhdGE6YXBwbGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0
PXV0Zi04O2Jhc2U2NCwlQFwiPiIsIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6bWFuaWZlc3RPYmplY3Qgb3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0
cmluZ1dpdGhPcHRpb25zOjBdXV07CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZl
c3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVz
dCkgeworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3QubmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJUZXN0Il0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIG1hbmlmZXN0T2JqZWN0ID0gQHsKKyAg
ICAgICAgQCJuYW1lIjogQCJBIFdlYiBBcHBsaWNhdGlvbiIsCisgICAgICAgIEAic2hvcnRfbmFt
ZSI6IEAiV2ViQXBwIiwKKyAgICAgICAgQCJkZXNjcmlwdGlvbiI6IEAiSGVsbG8uIiwKKyAgICAg
ICAgQCJzdGFydF91cmwiOiBAImh0dHA6Ly9leGFtcGxlLmNvbS9hcHAvc3RhcnQiLAorICAgICAg
ICBAInNjb3BlIjogQCJodHRwOi8vZXhhbXBsZS5jb20vYXBwIiwKKyAgICB9OworICAgIE5TU3Ry
aW5nICpodG1sU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8bGluayByZWw9
XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQs
JUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om1hbmlmZXN0
T2JqZWN0IG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9u
czowXV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tL2FwcC9pbmRleCJdXTsKKyAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZp
ZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZl
c3QubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBIFdlYiBBcHBsaWNhdGlvbiJdKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUoW21hbmlmZXN0LnNob3J0TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJXZWJBcHAi
XSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdC5hcHBsaWNhdGlvbkRlc2NyaXB0aW9u
IGlzRXF1YWxUb1N0cmluZzpAIkhlbGxvLiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlm
ZXN0LnN0YXJ0VVJMIGlzRXF1YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBs
ZS5jb20vYXBwL3N0YXJ0Il1dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LnNjb3Bl
IGlzRXF1YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vYXBwIl1d
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQgJiYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKaW5kZXggMzMyZmUyNjFjNmUuLmE4YmM3Y2JmMjMwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKQEAgLTMwNiw0ICszMDYsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAg
dm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKKworICAgIHZvaWQgZ2V0QXBwbGljYXRp
b25NYW5pZmVzdFRoZW4ob2JqZWN0IGNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4
IGM5MzM5ZjAxZjMwLi41NmIwZGNkZGI1NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI5OCw2ICsy
OTgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QiKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPmRp
ZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
ICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlVua25vd24iKSk7CiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFn
ZSwgZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAppbmRleCBjYjU2NzBiZTkxZC4uYWE5OGQwY2M1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNjUyLDYgKzY1
Miw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFja0lELAog
ICAgIFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lE
LAogICAgIERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCisgICAgR2V0
QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNr
SUQgPSAxMDAKIH07CiAKQEAgLTE4NzQsNCArMTg3NSwxNyBAQCB1aW50NjRfdCBUZXN0UnVubmVy
Ojpkb21DYWNoZVNpemUoSlNTdHJpbmdSZWYgb3JpZ2luKQogICAgIHJldHVybiBXS1VJbnQ2NEdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLVUludDY0UmVmPihyZXR1cm5EYXRhKSk7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oSlNWYWx1ZVJlZiBjYWxsYmFj
aykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRBcHBsaWNhdGlvbk1hbmlmZXN0
Q2FsbGJhY2tJRCwgY2FsbGJhY2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0
QXBwbGljYXRpb25NYW5pZmVzdCIpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgbnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkR2V0QXBwbGlj
YXRpb25NYW5pZmVzdCgpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhHZXRBcHBsaWNh
dGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCBkMzY5MTBkMDMxZS4uZDY0NDk0MzE3Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MDUsNiArNDA1LDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7
CiAgICAgdm9pZCBjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsK
KyAgICAKKyAgICB2b2lkIGdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKEpTVmFsdWVSZWYpOwor
ICAgIHZvaWQgZGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCgpOwogCiBwcml2YXRlOgogICAgIFRl
c3RSdW5uZXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggMmNhN2U1MjNjYzIuLmFiMzRlNDQ2M2FiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcApAQCAtMTI0NSw2ICsxMjQ1LDE5IEBAIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCCiAgICAgICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0KEFkb3B0V0ssIFdL
VUludDY0Q3JlYXRlKGRvbUNhY2hlU2l6ZSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkdldEFwcGxpY2F0aW9uTWFuaWZlc3QiKSkgeworI2lmZGVmIF9fQkxPQ0tTX18KKyAgICAg
ICAgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIF57CisgICAgICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpOworICAgICAgICAgICAgV0tQYWdl
UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgfSk7
CisjZWxzZQorICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEaWRHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0IikpOworICAgICAgICAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCAwKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKLS0gCjIu
MTMuNSAoQXBwbGUgR2l0LTk0KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328590</attachid>
            <date>2017-12-06 10:54:37 -0800</date>
            <delta_ts>2017-12-06 12:39:09 -0800</delta_ts>
            <desc>Patch for landing v3</desc>
            <filename>3pflv3.patch</filename>
            <type>text/plain</type>
            <size>73221</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDMzM2U5YTI5ODM3NjY0NGJiNjBjMjZkMjQ2ZDViMzcyZTJmOGZmODQKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjA0OjU5IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3Ig
ZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjk0CiAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAogICAgCiAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAg
IFRlc3Q6IGFwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwKICAgIAog
ICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgog
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CiAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKToKICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgogICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5n
KToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFBy
b3BlcnR5SW52YWxpZFVSTCk6CiAgICAgICAgRHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5j
ZSB0aGUgd2FybmluZyBpcyBwcmVmaXhlZCB3aXRoICJwYXJzaW5nCiAgICAgICAgYXBwbGljYXRp
b24gbWFuaWZlc3Q6IiwgcmVtb3ZlIGEgcmVkdW5kYW50IHVzZSBvZiAiYXBwbGljYXRpb24gbWFu
aWZlc3QiLgogICAgCiAgICBTb3VyY2UvV2ViS2l0OgogICAgCiAgICBBZGQgYSBuZXcgbWV0aG9k
IC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0gdG8gcmVxdWVzdAogICAgdGhlIG1hbmlmZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVu
dCBwYWdlLgogICAgCiAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CiAgICAqIFNoYXJlZC9D
b2NvYS9BUElPYmplY3QubW06CiAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CiAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5o
LgogICAgICAgIEFkZCBhIG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlm
ZXN0cy4KICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CiAgICAoV0tQYWdlR2V0QXBw
bGljYXRpb25NYW5pZmVzdF9iKToKICAgICAgICBBZGQgYSBDIHZlcnNpb24gb2YgdGhpcyBTUEkg
Zm9yIFdlYktpdFRlc3RSdW5uZXIuCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
Lmg6CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgogICAgKC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgogICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0Lmgu
CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRk
ZWQuCiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGVuY29kZVdpdGhDb2RlcjpdKToKICAgICgrW19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJM
OmRvY3VtZW50VVJMOl0pOgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBfYXBpT2JqZWN0
XSk6CiAgICAobnVsbGFibGVOU1N0cmluZyk6CiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IG5hbWVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2hvcnROYW1lXSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uRGVzY3JpcHRpb25dKToKICAgICgt
W19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2NvcGVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3Qgc3RhcnRVUkxdKToKICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KICAgIChBUEk6OndyYXBw
ZXIpOgogICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6YXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKToKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgogICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CiAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFw
cGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKICAgIAogICAg
VG9vbHM6CiAgICAKICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
bGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCiAgICAgICAgQWRkZWQgdHdvIEFQSSB0ZXN0cyBm
b3IgX1dLQXBwbGljYXRpb25NYW5pZmVzdDoKICAgICAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRp
b25NYW5pZmVzdCdzIGNvbmZvcm1hbmNlIHRvIE5TQ29kaW5nLgogICAgICAgIC0gVGVzdGluZyAt
W1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpd
LCB2ZXJpZnlpbmcgdGhlCiAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlc3VsdGluZyBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LgogICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgogICAgCiAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CiAg
ICAgICAgQWRkZWQgYSBuZXcgdGVzdFJ1bm5lciBtZXRob2QgZ2V0QXBwbGljYXRpb25NYW5pZmVz
dFRoZW4oKSwgdXNlZCBieSB0aGUgTGF5b3V0VGVzdHMKICAgICAgICB0byByZXF1ZXN0IHRoZSBk
b2N1bWVudCBsb2FkIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0LiBUaGUgbGF5b3V0IHRlc3RzIGZv
cm1lcmx5IGNhbGxlZAogICAgICAgIGFuIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZl
c3RUaGVuKCksIGJ1dCBJIGFkZGVkICdBcHBsaWNhdGlvbicgdG8gc29tZXdoYXQKICAgICAgICBk
aWZmZXJlbnRpYXRlIHRoaXMgZnJvbSB0aGUgYXBwIGNhY2hlIG1hbmlmZXN0LgogICAgCiAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgogICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKICAgIChXVFI6OlRl
c3RSdW5uZXI6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKToKICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CiAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAg
CiAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAgU2tpcCB0aGUgYXBwIG1hbmlmZXN0LXJl
bGF0ZWQgbGF5b3V0IHRlc3RzIGZvciBub3cgd2hpbGUgdGhlIGZlYXR1cmUgaXMgc3RpbGwgZGlz
YWJsZWQuCiAgICAgICAgQWxzbyBtb3ZlZCB0aGUgZXhwZWN0YXRpb25zIGRpc2FibGluZyB0aGUg
bWFuaWZlc3Qtc3JjIGxheW91dCB0ZXN0cyAod2hpY2ggbm93IHBhc3MKICAgICAgICB3aGVuIHRo
ZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgog
ICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQ6
IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1s
OiBBZGRlZC4KICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0
bWw6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSBvbmx5IHRoZSBm
aXJzdCBtYW5pZmVzdCBsaW5rIGlzIGxvYWRlZCB3aGVuIHRoZXJlCiAgICAgICAgYXJlIG11bHRp
cGxlIG9uIHRoZSBwYWdlLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZl
bG9wZXItd2FybmluZ3MubWFuaWZlc3Q6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHdhcm5pbmdzIGdlbmVyYXRlZCB3aGlsZSBwYXJzaW5nIHRoZSBtYW5p
ZmVzdCBhcmUKICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWw6
CiAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBs
aWNhdGlvbk1hbmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CiAgICAgICAg
VXBkYXRlZCB0aGUgZXhwZWN0ZWQgY29uc29sZSBtZXNzYWdlIHRvIHJlZmxlY3QgdGhlIGN1cnJl
bnQgd29yZGluZyBmb3IgQ1NQIHZpb2xhdGlvbnMuCiAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWw6CiAgICAgICAg
UmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb246CiAgICAgICAgUmVtb3ZlZCBhIHRyYWls
aW5nIG5ld2xpbmUgdGhhdCB3YXMgY2F1c2luZyBKU09OIHBhcnNpbmcgdG8gZmFpbC4KCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMjMyMjI2MzQ5YTIuLjc2ZDg4ODhjZTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTct
MTItMDEgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBT
a2lwIHRoZSBhcHAgbWFuaWZlc3QtcmVsYXRlZCBsYXlvdXQgdGVzdHMgZm9yIG5vdyB3aGlsZSB0
aGUgZmVhdHVyZSBpcyBzdGlsbCBkaXNhYmxlZC4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhl
IGV4cGVjdGF0aW9ucyBkaXNhYmxpbmcgdGhlIG1hbmlmZXN0LXNyYyBsYXlvdXQgdGVzdHMgKHdo
aWNoIG5vdyBwYXNzCisgICAgICAgICAgICB3aGVuIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRv
IHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFu
aWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbDog
QWRkZWQuCisgICAgICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgb25seSB0aGUg
Zmlyc3QgbWFuaWZlc3QgbGluayBpcyBsb2FkZWQgd2hlbiB0aGVyZQorICAgICAgICAgICAgYXJl
IG11bHRpcGxlIG9uIHRoZSBwYWdlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvcmVz
b3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICAgICBB
ZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3YXJuaW5ncyBnZW5lcmF0ZWQgd2hpbGUg
cGFyc2luZyB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbDoKKyAgICAgICAgICAgIFJlcGxhY2VkIGNhbGxzIHRv
IGdldE1hbmlmZXN0VGhlbigpIHdpdGggZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oKS4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVz
dC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICBVcGRhdGVkIHRoZSBleHBl
Y3RlZCBjb25zb2xlIG1lc3NhZ2UgdG8gcmVmbGVjdCB0aGUgY3VycmVudCB3b3JkaW5nIGZvciBD
U1AgdmlvbGF0aW9ucy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sOgorICAgICAgICAgICAgUmVwbGFj
ZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
VGhlbigpLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbjoKKyAgICAgICAgICAgIFJlbW92ZWQgYSB0
cmFpbGluZyBuZXdsaW5lIHRoYXQgd2FzIGNhdXNpbmcgSlNPTiBwYXJzaW5nIHRvIGZhaWwuCisK
IDIwMTctMTItMDYgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YXJrZWQgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3Jl
LWZhaWx1cmVzLXByaXZhdGUuaHRtbCBhcyBmbGFreSBvbiBtYWNPUy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDI0ZGE1MWI0ZDdiLi4yNTU0YTc5MzkxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MDk0LDggKzEwOTQsNiBAQCB3ZWJraXQub3JnL2IvMTExODY5IGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L2V2YWwtYmxvY2tlZC1hbmQtcwogd2Via2l0Lm9yZy9iLzE1
MzE0OCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ldmFsLWFsbG93
ZWQtaW4tcmVwb3J0LW9ubHktbW9kZS1hbmQtc2VuZHMtcmVwb3J0LnBocAogd2Via2l0Lm9yZy9i
LzE1MzE1MCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvY2hp
bGQtc3JjL2ZyYW1lLWZpcmVzLWxvYWQtZXZlbnQtd2hlbi1ibG9ja2VkLmh0bWwKIHdlYmtpdC5v
cmcvYi8xNTMxNTAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4x
L2NoaWxkLXNyYy9mcmFtZS1maXJlcy1sb2FkLWV2ZW50LXdoZW4tcmVkaXJlY3QtYmxvY2tlZC5o
dG1sCi13ZWJraXQub3JnL2IvMTUzMTUyIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwgIyBOZWVkcyB0ZXN0UnVubmVyLmdl
dE1hbmlmZXN0VGhlbigpCi13ZWJraXQub3JnL2IvMTUzMTUyIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWwgIyBOZWVkcyB0
ZXN0UnVubmVyLmdldE1hbmlmZXN0VGhlbigpCiB3ZWJraXQub3JnL2IvMTUzMTU1IGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9zY3JpcHRoYXNoLWJhc2ljLWJs
b2NrZWQtZXJyb3ItZXZlbnQuaHRtbAogd2Via2l0Lm9yZy9iLzE1MzE1NSBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc3R5bGVoYXNoLWJhc2ljLWJsb2NrZWQt
ZXJyb3ItZXZlbnQuaHRtbAogd2Via2l0Lm9yZy9iLzE1MzE1NSBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc3R5bGVoYXNoLXN2Zy1zdHlsZS1iYXNpYy1ibG9j
a2VkLWVycm9yLWV2ZW50Lmh0bWwKQEAgLTE2MzQsMyArMTYzMiw5IEBAIHdlYmtpdC5vcmcvYi8x
NzkyODcgaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9BbmltYXRpb25UaW1lbGlu
ZS9kb2N1bWVuCiB3ZWJraXQub3JnL2IvMTc5Mjg3IGh0dHAvd3B0L3dlYi1hbmltYXRpb25zL3Rp
bWluZy1tb2RlbC9hbmltYXRpb25zL3NldC10aGUtYW5pbWF0aW9uLXN0YXJ0LXRpbWUuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzc0NDAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL29yaWdpbi9yZWxheGluZy10aGUtc2FtZS1vcmln
aW4tcmVzdHJpY3Rpb24vZG9jdW1lbnRfZG9tYWluX3NldHRlcl9udWxsLnRlbnRhdGl2ZS5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KKworIyBBcHBsaWNhdGlvbiBNYW5pZmVzdCB0ZXN0cword2Via2l0
Lm9yZy9iLzE1MzE1MiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9t
YW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTUzMTUyIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9j
a2VkLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xNTgyMDUgYXBwbGljYXRpb25tYW5pZmVz
dC8gWyBTa2lwIF0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVz
dC9kZXZlbG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYXBwbGljYXRp
b25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMzIwZjQ1MmUyMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogUGFyc2luZyBhcHBsaWNh
dGlvbiBtYW5pZmVzdCBkZXZlbG9wZXItd2FybmluZ3MubWFuaWZlc3Q6IFRoZSB2YWx1ZSBvZiAi
c3RhcnRfdXJsIiBpcyBub3QgYSB2YWxpZCBVUkwuCitDT05TT0xFIE1FU1NBR0U6IFBhcnNpbmcg
YXBwbGljYXRpb24gbWFuaWZlc3QgZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0OiBUaGUgdmFs
dWUgb2YgIm5hbWUiIGlzIG5vdCBhIHN0cmluZy4KK0FMRVJUOiBQYXNzCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZTViYzc3YmY2YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVy
LXdhcm5pbmdzLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJl
Zj0icmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5nZXRBcHBsaWNhdGlv
bk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgYWxlcnQoIlBhc3MiKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfSk7Cit9Cis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5r
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMy
MjNlNmRmNGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5p
ZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACittdWx0aXBs
ZS1saW5rcy5odG1sIC0gZGlkRmluaXNoTG9hZGluZwordXJsc2NoZW1lOi8vMSAtIHdpbGxTZW5k
UmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCB1cmxzY2hlbWU6Ly8xLCBtYWluIGRvY3VtZW50IFVS
TCBtdWx0aXBsZS1saW5rcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2Ug
KG51bGwpCit1cmxzY2hlbWU6Ly8xIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6IDxOU0Vycm9y
IGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC0xMDAyLCBmYWlsaW5nIFVSTCAidXJsc2No
ZW1lOi8vMSI+CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTg0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlv
bm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1h
bmlmZXN0L211bHRpcGxlLWxpbmtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjc1ZDgwMTE3NzFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBw
bGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxs
aW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9InVybHNjaGVtZTovLzEiIG1lZGlhPSJwcmludCI+Cis8
bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSJ1cmxzY2hlbWU6Ly8yIj4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKTsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmdldEFwcGxp
Y2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgeworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKwl9KTsKK30KKzwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Bl
ci13YXJuaW5ncy5tYW5pZmVzdCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvcmVz
b3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNmEwYmIwODdhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZlbG9wZXItd2FybmluZ3MubWFu
aWZlc3QKQEAgLTAsMCArMSw0IEBACit7CisgICAgIm5hbWUiOiAwLAorICAgICJzdGFydF91cmwi
OiAiaHR0cDo/IgorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlm
ZXN0LXNyYy1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sCmluZGV4IGRkYmQ0
N2QyN2UyLi5lZjVlMTBhZWRiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9tYW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sCkBAIC00LDcgKzQsNyBAQAogICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZ2V0TWFu
aWZlc3RUaGVuKGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9u
TWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYWxlcnQoIlBhc3MiKTsKICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4
cGVjdGVkLnR4dAppbmRleCA3MDZiODg1YzY1Ni4uMmY2NTFjNmQ4ZWMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlm
ZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBl
Y3RlZC50eHQKQEAgLTEsNCArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9h
ZCBtYW5pZmVzdCBmcm9tICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbicgYmVjYXVzZSBpdCB2aW9s
YXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIm1h
bmlmZXN0LXNyYyAnbm9uZSciLgotCitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlm
ZXN0LnRlc3QvbWFuaWZlc3QuanNvbiBiZWNhdXNlIGl0IGRvZXMgbm90IGFwcGVhciBpbiB0aGUg
bWFuaWZlc3Qtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuCiBB
TEVSVDogUGFzcwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qt
c3JjLWJsb2NrZWQuaHRtbAppbmRleCBhN2RmNzE0NmJmNC4uY2Q0ZDFmN2I4OTcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbApA
QCAtNCw3ICs0LDcgQEAKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotICAgICAgICB0ZXN0UnVubmVyLmdldE1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKICAg
ICAgICAgICAgIGFsZXJ0KCJQYXNzIik7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24g
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9t
YW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24KaW5kZXggZGE2ZGNmOGI1ODMuLjdmZTg4NGQ3YTA2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24KKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3QudGVzdC9t
YW5pZmVzdC5qc29uCkBAIC0xLDQgKzEsNCBAQAogewogICAgICJuYW1lIjogIlN1cGVyIFJhY2Vy
IDIwMDAiLAogICAgICJzdGFydF91cmwiOiAiL3N0YXJ0Lmh0bWwiCi19Cit9ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMyMGFkOTFhMTlmLi5mZDY1NzNmNTFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEyLTAxICBEYXZpZCBRdWVzYWRhICA8
ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFk
ZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5pZmVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjk0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzM0
NzQ3OTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
VGVzdDogYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OjpkZWNvZGUpOgorICAgICAgICAq
IE1vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlm
ZXN0UHJvcGVydHlOb3RBU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFu
aWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlJbnZhbGlkVVJMKToKKyAgICAgICAgICAg
IERyaXZlLWJ5IHdvcmRpbmcgY2hhbmdlcy4gU2luY2UgdGhlIHdhcm5pbmcgaXMgcHJlZml4ZWQg
d2l0aCAicGFyc2luZworICAgICAgICAgICAgYXBwbGljYXRpb24gbWFuaWZlc3Q6IiwgcmVtb3Zl
IGEgcmVkdW5kYW50IHVzZSBvZiAiYXBwbGljYXRpb24gbWFuaWZlc3QiLgorCiAyMDE3LTEyLTA2
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
W01hY10gUkVHUkVTU0lPTiAocjIyNDUyNyk6IERyYXdpbmcgYSBwYXRoIHdpdGggYm94LXNoYWRv
dyB0YWtlcyBkb3VibGUgdGhlIGJsdXItcmFkaXVzIG9uIFJldGluYSBkaXNwbGF5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRp
b25NYW5pZmVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0
L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAppbmRleCBlZjk2MjY5MDk2Ny4uYzcwZTdlNjBjOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBs
aWNhdGlvbk1hbmlmZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlv
bm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIAogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDggKzM4LDM2
IEBAIHN0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0IHsKICAgICBTdHJpbmcgZGVzY3JpcHRpb247
CiAgICAgVVJMIHNjb3BlOwogICAgIFVSTCBzdGFydFVSTDsKKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBkZWNv
ZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBuYW1lIDw8IHNob3J0TmFtZSA8PCBkZXNjcmlwdGlvbiA8PCBzY29wZSA8PCBzdGFy
dFVSTDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QXBwbGlj
YXRpb25NYW5pZmVzdD4gQXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgQXBwbGljYXRpb25NYW5pZmVzdCByZXN1bHQ7CisKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5uYW1lKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG9ydE5hbWUpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRlc2NyaXB0aW9u
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5zY29wZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuc3RhcnRVUkwpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZl
c3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0
L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDQ2N2U1NjgzMTRhLi4wOTcwYTUy
NzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcApA
QCAtNzksMTIgKzc5LDEyIEBAIEFwcGxpY2F0aW9uTWFuaWZlc3QgQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlcjo6cGFyc2VNYW5pZmVzdChjb25zdCBTdHJpbmcmIHRleHQsCiAKIHZvaWQgQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eU5vdEFTdHJpbmcoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgbG9nRGV2ZWxvcGVyV2FybmluZygiVGhlIFwi
IiArIHByb3BlcnR5TmFtZSArICJcIiBhcHBsaWNhdGlvbiBtYW5pZmVzdCBwcm9wZXJ0eSBpcyBu
b3QgYSBzdHJpbmcuIik7CisgICAgbG9nRGV2ZWxvcGVyV2FybmluZygiVGhlIHZhbHVlIG9mIFwi
IiArIHByb3BlcnR5TmFtZSArICJcIiBpcyBub3QgYSBzdHJpbmcuIik7CiB9CiAKIHZvaWQgQXBw
bGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nTWFuaWZlc3RQcm9wZXJ0eUludmFsaWRVUkwoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgbG9nRGV2ZWxvcGVyV2FybmluZygiVGhl
IFwiIiArIHByb3BlcnR5TmFtZSArICJcIiBhcHBsaWNhdGlvbiBtYW5pZmVzdCBwcm9wZXJ0eSBp
cyBub3QgYSB2YWxpZCBVUkwuIik7CisgICAgbG9nRGV2ZWxvcGVyV2FybmluZygiVGhlIHZhbHVl
IG9mIFwiIiArIHByb3BlcnR5TmFtZSArICJcIiBpcyBub3QgYSB2YWxpZCBVUkwuIik7CiB9CiAK
IHZvaWQgQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlcjo6bG9nRGV2ZWxvcGVyV2FybmluZyhjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjOWEyMmFhYzlkLi5mMDUxNDY5MGZkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0wMSAgRGF2aWQgUXVlc2FkYSAgPGRh
dmlkX3F1ZXNhZGFAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBZGQg
U1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI5NAorICAgICAgICByZGFyOi8vcHJvYmxlbS8zNDc0
Nzk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFk
ZCBhIG5ldyBtZXRob2QgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29t
cGxldGlvbkhhbmRsZXI6XSB0byByZXF1ZXN0CisgICAgICAgIHRoZSBtYW5pZmVzdCBhc3NvY2lh
dGVkIHdpdGggdGhlIGN1cnJlbnQgcGFnZS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQ
STo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXBwbGlj
YXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxp
Y2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oLgorICAgICAgICAgICAgQWRkIGEg
bmV3IEFQSSBvYmplY3QgdHlwZSBmb3IgYXBwbGljYXRpb24gbWFuaWZlc3RzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0QXBwbGljYXRp
b25NYW5pZmVzdF9iKToKKyAgICAgICAgICAgIEFkZCBhIEMgdmVyc2lvbiBvZiB0aGlzIFNQSSBm
b3IgV2ViS2l0VGVzdFJ1bm5lci4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVz
dC9BcHBsaWNhdGlvbk1hbmlmZXN0LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLQXBwbGljYXRp
b25NYW5pZmVzdCBpbml0V2l0aENvZGVyOl0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0IGVuY29kZVdpdGhDb2RlcjpdKToKKyAgICAgICAgKCtbX1dLQXBwbGljYXRpb25NYW5p
ZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046bWFuaWZlc3RVUkw6ZG9jdW1lbnRVUkw6
XSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgX2FwaU9iamVjdF0pOgorICAg
ICAgICAobnVsbGFibGVOU1N0cmluZyk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZl
c3QgbmFtZV0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IHNob3J0TmFtZV0p
OgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uRGVzY3JpcHRp
b25dKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBzY29wZV0pOgorICAgICAg
ICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IHN0YXJ0VVJMXSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9u
TWFuaWZlc3QuaC4KKyAgICAgICAgKEFQSTo6d3JhcHBlcik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGlj
YXRpb25NYW5pZmVzdENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpn
ZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMi0wNiAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3Nd
IEludHJvZHVjZSBOaWNvc2lhOjpQYWludGluZ0NvbnRleHQsIGFkZCBDYWlybyBpbXBsZW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGYwNzQxNGM4N2E5Li43
NTU3MmE2ZGJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtOTcsNiAr
OTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBVSVByb2Nlc3MgdHlwZXMKICAg
ICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIsCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQorICAgICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0LAorI2VuZGlmCiAgICAgICAgIEF0
dGFjaG1lbnQsCiAgICAgICAgIEF1dG9tYXRpb25TZXNzaW9uLAogICAgICAgICBCYWNrRm9yd2Fy
ZExpc3QsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggZGZiYTlm
ZDk0ZjEuLmM3NWIyMzE0NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCkBAIC04MSw2ICs4MSwxMCBAQAogI2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZUludGVybmFsLmgiCiAKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
SW50ZXJuYWwuaCIKKyNlbmRpZgorCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbmltdW1PYmplY3RB
bGlnbm1lbnQgPSA4Owogc3RhdGljX2Fzc2VydChtaW5pbXVtT2JqZWN0QWxpZ25tZW50ID49IGFs
aWdub2Yodm9pZCopLCAiT2JqZWN0cyBzaG91bGQgYWx3YXlzIGJlIGF0IGxlYXN0IHBvaW50ZXIt
YWxpZ25lZC4iKTsKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bUV4dHJhU3BhY2VGb3JBbGln
bm1lbnQgPSBtaW5pbXVtT2JqZWN0QWxpZ25tZW50IC0gYWxpZ25vZih2b2lkKik7CkBAIC0xMTks
NiArMTIzLDEyIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5
cGUpCiAgICAgLy8gQVBJOjpPYmplY3QsIHNvIHRoZXkgYXJlIGFsbG9jYXRlZCB1c2luZyArYWxs
b2MuCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCisgICAgY2FzZSBUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICB3cmFwcGVy
ID0gW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgYWxsb2NdOworICAgICAgICBicmVhazsKKyNlbmRp
ZgorCiAgICAgY2FzZSBUeXBlOjpBcnJheToKICAgICAgICAgd3JhcHBlciA9IFtXS05TQXJyYXkg
YWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5lZDMzMTQ4YmY2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisKK25hbWVzcGFjZSBBUEkg
eworCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorY2xhc3MgQXBwbGljYXRpb25N
YW5pZmVzdCBmaW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25NYW5pZmVz
dD4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3QmIGFwcGxpY2F0aW9u
TWFuaWZlc3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlv
bk1hbmlmZXN0KGFwcGxpY2F0aW9uTWFuaWZlc3QpKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBB
cHBsaWNhdGlvbk1hbmlmZXN0KGNvbnN0IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3QmIGFw
cGxpY2F0aW9uTWFuaWZlc3QpCisgICAgICAgIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0KGFwcGxp
Y2F0aW9uTWFuaWZlc3QpCisgICAgeworICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OkFwcGxp
Y2F0aW9uTWFuaWZlc3QmIGFwcGxpY2F0aW9uTWFuaWZlc3QoKSBjb25zdCB7IHJldHVybiBtX2Fw
cGxpY2F0aW9uTWFuaWZlc3Q7IH0KKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0IG1fYXBwbGljYXRpb25NYW5pZmVzdDsKK307CisjZW5kaWYKKworfSAvLyBuYW1l
c3BhY2UgQVBJCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IGYyMjQ0ZDc0Mzc0Li4zMmU0ZjRhZmRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCkBAIC0yNzYwLDMgKzI3NjAsMTcgQEAgUHJvY2Vzc0lEIFdLUGFnZUdldFBy
b2Nlc3NJZGVudGlmaWVyKFdLUGFnZVJlZiBwYWdlKQogewogICAgIHJldHVybiB0b0ltcGwocGFn
ZSktPnByb2Nlc3NJZGVudGlmaWVyKCk7CiB9CisKKyNpZmRlZiBfX0JMT0NLU19fCit2b2lkIFdL
UGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBw
bGljYXRpb25NYW5pZmVzdEJsb2NrIGJsb2NrKQoreworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKyAgICB0b0ltcGwocGFnZSktPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2Jsb2Nr
XShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+ICZtYW5p
ZmVzdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAgICAgICBibG9jaygpOworICAgIH0pOwor
I2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIFVOVVNFRF9QQVJBTShw
YWdlKTsKKyAgICBibG9jaygpOworI2VuZGlmIC8vIG5vdCBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZVByaXZhdGUuaAppbmRleCAwZGY4MzY0ODk0ZS4uYmIyNmRlOGFiZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKQEAgLTE3OCw2ICsxNzgsMTEg
QEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0SWdub3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMoV0tQ
YWdlUmVmIHBhZ2UsIGJvb2wgaWdub3Jlc1YKIAogV0tfRVhQT1JUIFdLUHJvY2Vzc0lEIFdLUGFn
ZUdldFByb2Nlc3NJZGVudGlmaWVyKFdLUGFnZVJlZiBwYWdlKTsKIAorI2lmZGVmIF9fQkxPQ0tT
X18KK3R5cGVkZWYgdm9pZCAoXldLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jaykodm9p
ZCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdl
UmVmIHBhZ2UsIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jayk7CisjZW5k
aWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDVlNDE2Y2Q4YmQ4Li5hMjlkYmNi
MWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC0xMTcsNiArMTE3LDEwIEBACiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9keWxkU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKKyNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCisjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2ltcG9ydCAiV0tEYXRh
RGV0ZWN0b3JUeXBlc0ludGVybmFsLmgiCiAjZW5kaWYKQEAgLTQzNDQsNiArNDM0OCwyNSBAQCAt
ICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1N0cmluZyAqLCBOU0Vycm9yCiAgICAgfSk7CiB9CiAKKy0gKHZvaWQpX2dldEFwcGxpY2F0
aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS0FwcGxpY2F0aW9u
TWFuaWZlc3QgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisgICAgX3BhZ2UtPmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBVTlVTRUQoZXJyb3IpOworICAgICAg
ICBpZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIGlmIChtYW5pZmVzdCkgewor
ICAgICAgICAgICAgICAgIGF1dG8gYXBpTWFuaWZlc3QgPSBBUEk6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q6OmNyZWF0ZSgqbWFuaWZlc3QpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHdyYXBwZXIoYXBpTWFuaWZlc3QpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIH0KKyAgICB9KTsKKyNlbHNlCisg
ICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwp
OworI2VuZGlmCit9CisKIC0gKF9XS1BhZ2luYXRpb25Nb2RlKV9wYWdpbmF0aW9uTW9kZQogewog
ICAgIHN3aXRjaCAoX3BhZ2UtPnBhZ2luYXRpb25Nb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDk2NmZi
OWJhMTliLi41N2Q4MjJmNzk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC05Niw2ICs5Niw3IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU0ludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAjZW5kaWYKIAogQGNsYXNzIFdL
QnJvd3NpbmdDb250ZXh0SGFuZGxlOworQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CiBA
Y2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsKIEBjbGFzcyBf
V0tJY29uTG9hZGluZ0RlbGVnYXRlOwpAQCAtMzA3LDYgKzMwOCw4IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU0ludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9nZXRXZWJBcmNoaXZlRGF0
YVdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpY29t
cGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9nZXRDb250ZW50c0FzU3RyaW5nV2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzKSwgaW9zKDExLjApKTsKIAorLSAodm9p
ZClfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
X1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0UGFnaW5hdGlvbk1vZGU6KSBfV0tQYWdpbmF0aW9uTW9kZSBf
cGFnaW5hdGlvbk1vZGU7CiAvLyBXaGV0aGVyIHRoZSBjb2x1bW4tYnJlYWste2JlZm9yZSxhZnRl
cn0gcHJvcGVydGllcyBhcmUgcmVzcGVjdGVkIGluc3RlYWQgb2YgdGhlCiAvLyBwYWdlLWJyZWFr
LXtiZWZvcmUsYWZ0ZXJ9IHByb3BlcnRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjFjNTBmMmJlMTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSkKK0BpbnRlcmZhY2UgX1dLQXBwbGljYXRpb25NYW5pZmVzdCA6IE5TT2JqZWN0IDxOU0NvZGlu
Zz4KKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNT
dHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBj
b3B5KSBOU1N0cmluZyAqc2hvcnROYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmFwcGxpY2F0aW9uRGVzY3JpcHRpb247CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU1VSTCAqc2NvcGU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMICpzdGFydFVSTDsK
KworKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNP
TjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3Vt
ZW50VVJMOihudWxsYWJsZSBOU1VSTCAqKWRvY3VtZW50VVJMOworCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZl
c3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU0M2FmMTQ3N2Mw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5h
bC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlv
bk1hbmlmZXN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
aD4KKworQGltcGxlbWVudGF0aW9uIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QKKworI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6
KE5TQ29kZXIgKilhRGVjb2RlcgoreworICAgIE5TU3RyaW5nICpuYW1lID0gW2FEZWNvZGVyIGRl
Y29kZU9iamVjdEZvcktleTpAIm5hbWUiXTsKKyAgICBOU1N0cmluZyAqc2hvcnROYW1lID0gW2FE
ZWNvZGVyIGRlY29kZU9iamVjdEZvcktleTpAInNob3J0X25hbWUiXTsKKyAgICBOU1N0cmluZyAq
ZGVzY3JpcHRpb24gPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAiZGVzY3JpcHRpb24i
XTsKKyAgICBOU1VSTCAqc2NvcGVVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAi
c2NvcGUiXTsKKyAgICBOU1VSTCAqc3RhcnRVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9y
S2V5OkAic3RhcnRfdXJsIl07CisKKyAgICBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0IGNv
cmVBcHBsaWNhdGlvbk1hbmlmZXN0IHsKKyAgICAgICAgV1RGOjpTdHJpbmcobmFtZSksCisgICAg
ICAgIFdURjo6U3RyaW5nKHNob3J0TmFtZSksCisgICAgICAgIFdURjo6U3RyaW5nKGRlc2NyaXB0
aW9uKSwKKyAgICAgICAgV2ViQ29yZTo6VVJMKHNjb3BlVVJMKSwKKyAgICAgICAgV2ViQ29yZTo6
VVJMKHN0YXJ0VVJMKQorICAgIH07CisKKyAgICBBUEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFw
cGVyPEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdD4oc2VsZiwgV1RGTW92ZShjb3JlQXBwbGljYXRp
b25NYW5pZmVzdCkpOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5+QXBwbGljYXRpb25NYW5pZmVzdCgpOworCisg
ICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2Rl
ciAqKWFDb2RlcgoreworICAgIFthQ29kZXIgZW5jb2RlT2JqZWN0OnNlbGYubmFtZSBmb3JLZXk6
QCJuYW1lIl07CisgICAgW2FDb2RlciBlbmNvZGVPYmplY3Q6c2VsZi5zaG9ydE5hbWUgZm9yS2V5
OkAic2hvcnRfbmFtZSJdOworICAgIFthQ29kZXIgZW5jb2RlT2JqZWN0OnNlbGYuYXBwbGljYXRp
b25EZXNjcmlwdGlvbiBmb3JLZXk6QCJkZXNjcmlwdGlvbiJdOworICAgIFthQ29kZXIgZW5jb2Rl
T2JqZWN0OnNlbGYuc2NvcGUgZm9yS2V5OkAic2NvcGUiXTsKKyAgICBbYUNvZGVyIGVuY29kZU9i
amVjdDpzZWxmLnN0YXJ0VVJMIGZvcktleTpAInN0YXJ0X3VybCJdOworfQorCisrIChfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAq
KWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5TVVJM
ICopZG9jdW1lbnRVUkwKK3sKKyAgICBhdXRvIG1hbmlmZXN0ID0gV2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdFBhcnNlcjo6cGFyc2UoV1RGOjpTdHJpbmcoanNvbiksIFdlYkNvcmU6OlVSTCht
YW5pZmVzdFVSTCksIFdlYkNvcmU6OlVSTChkb2N1bWVudFVSTCkpOworICAgIHJldHVybiBbQVBJ
Ojp3cmFwcGVyKEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdDo6Y3JlYXRlKG1hbmlmZXN0KS5sZWFr
UmVmKCkpIGF1dG9yZWxlYXNlXTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sK
KyAgICByZXR1cm4gKl9hcHBsaWNhdGlvbk1hbmlmZXN0OworfQorCitzdGF0aWMgTlNTdHJpbmcg
Km51bGxhYmxlTlNTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1
cm4gc3RyaW5nLmlzTnVsbCgpID8gbmlsIDogKE5TU3RyaW5nICopc3RyaW5nOworfQorCistIChO
U1N0cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gbnVsbGFibGVOU1N0cmluZyhfYXBwbGljYXRp
b25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLm5hbWUpOworfQorCistIChOU1N0cmlu
ZyAqKXNob3J0TmFtZQoreworICAgIHJldHVybiBudWxsYWJsZU5TU3RyaW5nKF9hcHBsaWNhdGlv
bk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkuc2hvcnROYW1lKTsKK30KKworLSAoTlNT
dHJpbmcgKilhcHBsaWNhdGlvbkRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIG51bGxhYmxlTlNT
dHJpbmcoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5kZXNjcmlw
dGlvbik7Cit9CisKKy0gKE5TVVJMICopc2NvcGUKK3sKKyAgICByZXR1cm4gX2FwcGxpY2F0aW9u
TWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5zY29wZTsKK30KKworLSAoTlNVUkwgKilz
dGFydFVSTAoreworICAgIHJldHVybiBfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25N
YW5pZmVzdCgpLnN0YXJ0VVJMOworfQorCisjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCisKKysgKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0
RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBtYW5pZmVzdFVSTDooTlNVUkwgKiltYW5pZmVzdFVS
TCBkb2N1bWVudFVSTDooTlNVUkwgKilkb2N1bWVudFVSTAoreworICAgIFVOVVNFRF9QQVJBTShq
c29uKTsKKyAgICBVTlVTRURfUEFSQU0obWFuaWZlc3RVUkwpOworICAgIFVOVVNFRF9QQVJBTShk
b2N1bWVudFVSTCk7CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilhRGVjb2RlcgoreworICAgIFVO
VVNFRF9QQVJBTShhRGVjb2Rlcik7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZCllbmNv
ZGVXaXRoQ29kZXI6KE5TQ29kZXIgKilhQ29kZXIKK3sKKyAgICBVTlVTRURfUEFSQU0oYUNvZGVy
KTsKK30KKworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAo
TlNTdHJpbmcgKilzaG9ydE5hbWUKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1N0cmlu
ZyAqKWFwcGxpY2F0aW9uRGVzY3JpcHRpb24KK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChO
U1VSTCAqKXNjb3BlCit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNVUkwgKilzdGFydFVS
TAoreworICAgIHJldHVybiBuaWw7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVz
dEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGlj
YXRpb25NYW5pZmVzdEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjJiODc4ODZjMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJQXBwbGlj
YXRpb25NYW5pZmVzdC5oIgorI2ltcG9ydCAiX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oIgorI2lt
cG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0OworfQorCisjaWYgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0ICp3cmFwcGVyKEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdCYgYXBwbGljYXRpb25NYW5p
ZmVzdCkKK3sKKyAgICBBU1NFUlQoW2FwcGxpY2F0aW9uTWFuaWZlc3Qud3JhcHBlcigpIGlzS2lu
ZE9mQ2xhc3M6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgY2xhc3NdXSk7CisgICAgcmV0dXJuIChf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25NYW5pZmVzdC53cmFwcGVyKCk7Cit9
CisKK30KKworQGludGVyZmFjZSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICgpIDxXS09iamVjdD4g
eworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBfYXBwbGljYXRpb25NYW5pZmVzdDsKK30KKworQGVuZAorCisjZW5kaWYgLy8gRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJiYjhhMjc4NThkLi5jZDg5
OWE2ODQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01
MzEzLDYgKzUzMTMsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVkaXRpbmdSYW5nZUNhbGxiYWNr
KGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIENhbGxiYWNrSUQgY2EKICAgICBjYWxsYmFjay0+
cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKHJhbmdlKTsKIH0KIAorI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKK3ZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbk1hbmlm
ZXN0Q2FsbGJhY2soY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0PiYgbWFuaWZlc3RPck51bGwsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBhdXRv
IGNhbGxiYWNrID0gbV9jYWxsYmFja3MudGFrZTxBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2s+
KGNhbGxiYWNrSUQpOworICAgIGlmICghY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUobWFuaWZlc3RPck51bGwp
OworfQorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgV2ViUGFnZVByb3h5Ojpt
YWNoU2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgTWFjaFNlbmRSaWdodCYgc2VuZFJpZ2h0LCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCiB7CkBAIC03MjI0LDQgKzcyMzUsMTggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlbW92ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KEZ1bmN0aW9uPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit7Cisg
ICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihzdGQ6Om51bGxv
cHQsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNr
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRp
b25NYW5pZmVzdChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAy
OTM4ODlmY2YzMi4uM2ViZjIxZmE3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTU3LDYgKzE1Nyw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRl
eHRJbmRpY2F0b3I7CiBjbGFzcyBWYWxpZGF0aW9uQnViYmxlOwogCitzdHJ1Y3QgQXBwbGljYXRp
b25NYW5pZmVzdDsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IEV4Y2VwdGlv
bkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKQEAgLTI2NSw2ICsyNjYsMTAg
QEAgc3RydWN0IFF1ZXVlZFRvdWNoRXZlbnRzIHsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNv
bnN0IFN0cmluZyYsIGJvb2wsIGludDMyX3Q+IFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrOwogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRp
bmdSYW5nZSY+IFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrOwogCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiY+IEFwcGxpY2F0aW9uTWFuaWZl
c3RDYWxsYmFjazsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgQXR0cmlidXRlZFN0cmluZyYsIGNvbnN0IEVkaXRpbmdSYW5nZSY+IEF0
dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmlj
Q2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgZG91YmxlLCBib29sPiBGb250QXRTZWxlY3Rpb25DYWxs
YmFjazsKQEAgLTEyNDIsNiArMTI0NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRhY2ht
ZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4mJiBuZXdDb250ZW50VHlw
ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+JiYgbmV3RmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJ
OjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
QEAgLTE1MDIsNiArMTUxMSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2YWxpZGF0ZUNvbW1hbmRD
YWxsYmFjayhjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
dW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBlZGl0aW5n
UmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0lEKTsKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgdm9pZCBhcHBsaWNhdGlvbk1hbmlmZXN0Q2Fs
bGJhY2soY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYs
IENhbGxiYWNrSUQpOworI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBtYWNo
U2VuZFJpZ2h0Q2FsbGJhY2soY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYsIENhbGxiYWNr
SUQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMWVmYTVmY2VmZTIuLjNkYjU5M2ZlZGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNjcsNiAr
MTY3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBFZGl0aW5nUmFuZ2VDYWxs
YmFjayhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQogICAgIFVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QgcmVzdWx0LCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VDYWxs
YmFjayhXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBh
Y3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQorICAgIEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBB
dHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhzdHJ1Y3QgV2ViS2l0OjpB
dHRyaWJ1dGVkU3RyaW5nIHN0cmluZywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVh
bFJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb250QXRTZWxlY3Rp
b25DYWxsYmFjayhTdHJpbmcgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rp
b0hhc011bHRpcGxlRm9udHMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDY0NWU3
ZDM2Y2EuLmQ3MzA5ZjYwMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMjgsNiArMTIyOCwxMCBAQAogCQk1Q0U4NUIyMDFDODhF
NjRCMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICov
OyB9OwogCQk1Q0ZFQ0IwNDFFMUVEMUNDMDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDRkVDQjAzMUUxRUQxQzgwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIu
Y3BwICovOyB9OwogCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNs
aWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk2MzEwOEY5NjFGOTY3
MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8q
IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk2MzEwOEY5NzFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
Lm1tICovOyB9OworCQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzEwOEY5ODFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dEludGVybmFsLmggKi87IH07CisJCTYzNDg0MjUxMUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBs
aWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyB9OwogCQk2MzYzNTNBNTFFOTg1OERGMDAwOUY4QUYgLyogX1dLR2VvbG9jYXRpb25D
b3JlTG9jYXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjNGQUJFMTkxRTk3MEQ2NTAwMzAxMUQ1IC8qIF9XS0dlb2xvY2F0aW9uQ29y
ZUxvY2F0aW9uUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2M0MzMkMyNTFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Q
b3NpdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDYzQzMyQzIzMUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tICov
OyB9OwogCQk2M0MzMkMyNjFFOTgxMEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNDMzJD
MjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzYxOCw2ICszNjIyLDEw
IEBACiAJCTVENDQyQTU1MTZENTg1NjcwMEFDMzMzMSAvKiBQbHVnaW5TZXJ2aWNlLmVudGl0bGVt
ZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueG1sOyBwYXRoID0gUGx1Z2luU2VydmljZS5lbnRpdGxlbWVudHM7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5NiAvKiBCYXNlVGFyZ2V0Lnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2VUYXJnZXQueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYxN0E1MkQ3MUY0M0E5QjYwMERDREMw
QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjMxMDhGOTQx
Rjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjNDMzJDMjMxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBv
c2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2M0MzMkMyNDFFOTgxMEQ5
MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTYzQzMyQzI3MUU5ODExOTAwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBv
c2l0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01Nzk1LDYgKzU4MDMsOSBAQAogCQkJCTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mby5oICovLAogCQkJCTM3QTVFMDExMThCQkY5MzcwMDBBMDgxRSAv
KiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSAqLywKIAkJCQkzNzlBODczNTE4QkJGQTQzMDA1
ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oICovLAorCQkJCTYzMTA4
Rjk0MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8sCisJCQkJ
NjMxMDhGOTUxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8s
CisJCQkJNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJ
bnRlcm5hbC5oICovLAogCQkJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2ht
ZW50LmggKi8sCiAJCQkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQu
bW0gKi8sCiAJCQkJRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRl
cm5hbC5oICovLApAQCAtNzE5NSw2ICs3MjA2LDcgQEAKIAkJCQkzN0M0QzA4MzE4MTQ5QzJBMDAz
Njg4QjkgLyogQ29jb2EgKi8sCiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTczIC8qIGNwcCAq
LywKIAkJCQlCQzExMUI0NzExMkY2MTY5MDAzMzdCQUIgLyogbWFjICovLAorCQkJCTYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi8sCiAJCQkJMkU1
Qzc3MEQxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovLAogCQkJCTJFNUM3
NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi8sCiAJCQkJOTlDODFENUIx
QzIwRTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLywKQEAgLTg0NjIsNiAr
ODQ3NCw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxNDE4QkJGOTNGMDAwQTA4MUUgLyog
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzM2MThC
QkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk2MzEwOEY5NjFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25N
YW5pZmVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjMxMDhGOTkxRjk2NzFGNzAwQTBEQjg0IC8q
IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0
MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRvbWF0
aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtODUzNyw2ICs4NTUxLDcgQEAKIAkJCQlB
MTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nl
c3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q3OTJEODE3NjdDQ0EzMDA4ODFD
QkUgLyogQWN0aXZpdHlBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTYzNDg0MjUxMUZC
MjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzY0Njk3MDExREJFNjAzMDA2NDU1QjAgLyogQVBJQXJyYXkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJFNUM3NzBFMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDExMCw2ICsxMDEyNSw3IEBACiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTMxOEJCRjkz
NzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJNjMxMDhGOTcxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0g
aW4gU291cmNlcyAqLywKIAkJCQlGNDQyOTE5NDFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNo
bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5MEQyOEIyMUM2NTIwOTQwMDk4Njk3NyAvKiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzg4QUNDMUY0MjFE
RTIwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDc4NjZhNzdlODMy
Li5hYjBhNTZiZTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xODQw
LDQgKzE4NDAsMTUgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
SWNvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFNoYXIKICAgICB9CiB9CiAKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpm
aW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYg
bWFuaWZlc3QpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAg
ICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYlBhZ2UtPmRpZEZpbmlz
aExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmllciwgbWFuaWZlc3Qp
OworfQorI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDVhMjJmMGQ3NjZh
Li4yOTBkMWJiZWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI2Miw2ICsy
NjIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb25zKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6TGlua0ljb24mLCB1aW50NjRfdD4+JikgZmluYWw7
CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyKikgZmluYWw7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KHVpbnQ2NF90LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q+JikgZmluYWw7CisjZW5kaWYKKwogICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgIFJlZlB0
cjxQbHVnaW5WaWV3PiBtX3BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggMzAyMjliYTNhNGMuLjUyNzE0ZDJlMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTg4Nyw0ICs1ODg3LDMyIEBAIFJlZlB0
cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElk
ZW50aWZpZXIoY29uc3QgU3RyCiAKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQordm9pZCBXZWJQYWdlOjpnZXRB
cHBsaWNhdGlvbk1hbmlmZXN0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBBU1NFUlQo
Y2FsbGJhY2tJRC5pc1ZhbGlkKCkpOworICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9
IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudExvYWRl
ciogbG9hZGVyID0gbWFpbkZyYW1lRG9jdW1lbnQgPyBtYWluRnJhbWVEb2N1bWVudC0+bG9hZGVy
KCkgOiBudWxscHRyOworCisgICAgaWYgKCFsb2FkZXIpIHsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2soc3RkOjpudWxsb3B0
LCBjYWxsYmFja0lEKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNvcmVD
YWxsYmFja0lEID0gbG9hZGVyLT5sb2FkQXBwbGljYXRpb25NYW5pZmVzdCgpOworICAgIGlmICgh
Y29yZUNhbGxiYWNrSUQpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpB
cHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2soc3RkOjpudWxsb3B0LCBjYWxsYmFja0lEKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENh
bGxiYWNrTWFwLmFkZChjb3JlQ2FsbGJhY2tJRCwgY2FsbGJhY2tJRC50b0ludGVnZXIoKSk7Cit9
CisKK3ZvaWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWlu
dDY0X3QgY29yZUNhbGxiYWNrSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KQoreworICAgIGF1dG8gY2FsbGJhY2tJRCA9IENhbGxi
YWNrSUQ6OmZyb21JbnRlZ2VyKG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAu
dGFrZShjb3JlQ2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKG1hbmlmZXN0LCBjYWxsYmFja0lEKSk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAz
NTA1YzhhYWYyMi4uMzA4NTZkNDg4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTg3LDYgKzg3LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9WaWV3
cG9ydENvbmZpZ3VyYXRpb24uaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01B
TklGRVNUKQorI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgorI2VuZGlm
CisKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICNpbmNsdWRlIDxXZWJLaXRBZGRpdGlv
bnMvUGxhdGZvcm1Ub3VjaEV2ZW50SU9TLmg+CiAjZWxpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpA
QCAtMTAzMCw2ICsxMDM0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRh
QW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2b2lkIGdldEFwcGxpY2F0aW9uTWFuaWZl
c3QoQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5p
ZmVzdCh1aW50NjRfdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTE2NDQsNiArMTY1MywxMCBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eSo+IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwOwogCiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sIGdyYW50ZWQpPj4gbV9zdG9yYWdl
QWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0RmV0Y2hDYWxsYmFja01hcDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBmYWY0Y2NiZGJmNS4uZjJmMThjYjU5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDkx
LDQgKzQ5MSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dEF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyhTdHJpbmcgaWRlbnRpZmllciwgc3RydWN0IFdlYkNv
cmU6OkF0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBTZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKFN0cmluZyBp
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCisKKyNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCisgICAgR2V0QXBwbGljYXRpb25NYW5pZmVzdChXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBjMzhhYjg3YjNiLi43OWQ5OGViOTAzZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBA
CisyMDE3LTEyLTAxICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5p
ZmVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
Mjk0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzM0NzQ3OTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW06IEFkZGVkLgorICAgICAgICAg
ICAgQWRkZWQgdHdvIEFQSSB0ZXN0cyBmb3IgX1dLQXBwbGljYXRpb25NYW5pZmVzdDoKKyAgICAg
ICAgICAgIC0gVGVzdGluZyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0J3MgY29uZm9ybWFuY2UgdG8g
TlNDb2RpbmcuCisgICAgICAgICAgICAtIFRlc3RpbmcgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0
aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSwgdmVyaWZ5aW5nIHRoZQorICAgICAg
ICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlc3VsdGluZyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAgICAg
QWRkZWQgYSBuZXcgdGVzdFJ1bm5lciBtZXRob2QgZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4o
KSwgdXNlZCBieSB0aGUgTGF5b3V0VGVzdHMKKyAgICAgICAgICAgIHRvIHJlcXVlc3QgdGhlIGRv
Y3VtZW50IGxvYWQgaXRzIGFzc29jaWF0ZWQgbWFuaWZlc3QuIFRoZSBsYXlvdXQgdGVzdHMgZm9y
bWVybHkgY2FsbGVkCisgICAgICAgICAgICBhbiB1bmltcGxlbWVudGVkIGZ1bmN0aW9uIGdldE1h
bmlmZXN0VGhlbigpLCBidXQgSSBhZGRlZCAnQXBwbGljYXRpb24nIHRvIHNvbWV3aGF0CisgICAg
ICAgICAgICBkaWZmZXJlbnRpYXRlIHRoaXMgZnJvbSB0aGUgYXBwIGNhY2hlIG1hbmlmZXN0Lgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRv
UGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0QXBwbGljYXRpb25NYW5pZmVz
dFRoZW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaWRHZXRBcHBsaWNhdGlvbk1hbmlm
ZXN0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE3LTEyLTA1ICBTdGVwaGFuIFN6YWJvICA8c3RlcGhh
bi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBTd2l0Y2ggd2luZG93cyBidWlsZCB0byBWaXN1
YWwgU3R1ZGlvIDIwMTcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzAwYzc3OGZhOWYuLjYw
YmRlMmQyN2QxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYwLDYgKzI2MCw3IEBACiAJ
CTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTRGNEQw
MUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCAqLzsgfTsK
IAkJNjM1NkZCMjIxRUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNTZGQjIxMUVDNEUw
QkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0gKi87IH07CiAJCTYzNjM1M0E3MUU5
ODY2NUQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYz
NjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlvbkdldEN1cnJlbnRQb3NpdGlvblJl
c3VsdC5odG1sICovOyB9OworCQk2M0Y2NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRp
b25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICov
OyB9OwogCQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzOEQ3RTUxQzc1
MkQ1RjAwNEYxNTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLzsgfTsKIAkJNzUxQjA1RDYxRjhF
QUM0MTAwMjhBMDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTFCMDVENTFGOEVBQzFBMDAyOEEwOUUgLyog
RGF0YWJhc2VUcmFja2VyVGVzdC5tbSAqLzsgfTsKIAkJNzU0Q0VDODExRjY3MjJGMjAwRDAwMzlB
IC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8qIEF1dG9GaWxsQXZhaWxh
YmxlLm1tICovOyB9OwpAQCAtMTQwMyw2ICsxNDA0LDcgQEAKIAkJNjM1NEY0RDAxRjdDM0FCNTAw
RDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTYzNTZGQjIxMUVDNEUwQkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaXNpYmxlQ29udGVudFJlY3QubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTYzNjM1M0E2MUU5ODYxOTQwMDA5RjhBRiAvKiBHZW9sb2NhdGlv
bkdldEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTFCMDVENTFGOEVBQzFBMDAyOEEwOUUg
LyogRGF0YWJhc2VUcmFja2VyVGVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFiYXNl
VHJhY2tlclRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NENFQzgwMUY2
NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEF1dG9GaWxsQXZhaWxhYmxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NTYwOTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZUFk
ZEltYWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMDIs
NiArMjAwNCw3IEBACiAJCQkJMzdFN0RENjUxRUEwNzE1QjAwOUIzOTZEIC8qIEFkZGl0aW9uYWxS
ZWFkQWNjZXNzQWxsb3dlZFVSTHNQcm90b2NvbC5oICovLAogCQkJCUExREY3NDMwMUM0MUI2NTgw
MEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJMkRFNzFB
RkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tICovLAorCQkJCTYzRjY2ODIw
MUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLAogCQkJCTc1NENF
QzgwMUY2NzIyREMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLywKIAkJCQkyREQz
NTUzNTFCRDA4Mzc4MDA1REY0QTcgLyogQXV0b0xheW91dEludGVncmF0aW9uLm1tICovLAogCQkJ
CTM3NEI3QTVFMURGMzZFRUUwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGUubW0gKi8s
CkBAIC0zMjU2LDYgKzMyNTksNyBAQAogCQkJCTdBOTA5QTdEMUQ4Nzc0ODAwMDdFMTBGOCAvKiBB
ZmZpbmVUcmFuc2Zvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFERjc0MzIxQzQxQjY1ODAw
QTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTJERTcxQUZFMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRlZFJlc2l6ZS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlm
ZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQjQx
QTQxMUE3RTAwNDQ3QzRDIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlDREM4RTQ4RDFCQzVDQjQ1MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNzEwYTc3YWFhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW0K
QEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lm
IFdLX0FQSV9FTkFCTEVEICYmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQXBwbGljYXRp
b25NYW5pZmVzdC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV2ViS2l0
LCBBcHBsaWNhdGlvbk1hbmlmZXN0Q29kaW5nKQoreworICAgIGF1dG8ganNvblN0cmluZyA9IEAi
eyBcIm5hbWVcIjogXCJUZXN0TmFtZVwiLCBcInNob3J0X25hbWVcIjogXCJUZXN0U2hvcnROYW1l
XCIsIFwiZGVzY3JpcHRpb25cIjogXCJUZXN0RGVzY3JpcHRpb25cIiwgXCJzY29wZVwiOiBcImh0
dHBzOi8vdGVzdC5jb20vYXBwXCIsIFwic3RhcnRfdXJsXCI6IFwiaHR0cHM6Ly90ZXN0LmNvbS9h
cHAvaW5kZXguaHRtbFwiIH0iOworICAgIFJldGFpblB0cjxfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
PiBtYW5pZmVzdCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RG
cm9tSlNPTjpqc29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly90ZXN0LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3Rlc3QuY29tLyJdXSB9OworICAgIAorICAgIG1hbmlmZXN0ID0gW05T
S2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOltOU0tleWVkQXJjaGl2ZXIg
YXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6bWFuaWZlc3QuZ2V0KCldXTsKKyAgICAKKyAgICBF
WFBFQ1RfVFJVRShbbWFuaWZlc3QgaXNLaW5kT2ZDbGFzczpbX1dLQXBwbGljYXRpb25NYW5pZmVz
dCBjbGFzc11dKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3ROYW1lIiwgbWFuaWZlc3QuZ2V0KCku
bmFtZS5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3RTaG9ydE5hbWUiLCBtYW5p
ZmVzdC5nZXQoKS5zaG9ydE5hbWUuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJUZXN0
RGVzY3JpcHRpb24iLCBtYW5pZmVzdC5nZXQoKS5hcHBsaWNhdGlvbkRlc2NyaXB0aW9uLlVURjhT
dHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cHM6Ly90ZXN0LmNvbS9hcHAiLCBtYW5pZmVz
dC5nZXQoKS5zY29wZS5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RS
RVEoImh0dHBzOi8vdGVzdC5jb20vYXBwL2luZGV4Lmh0bWwiLCBtYW5pZmVzdC5nZXQoKS5zdGFy
dFVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKK30KKworVEVTVChXZWJLaXQsIEFwcGxp
Y2F0aW9uTWFuaWZlc3RCYXNpYykKK3sKKyAgICBzdGF0aWMgYm9vbCBkb25lID0gZmFsc2U7CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0XSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiIl07CisgICAgW3dlYlZpZXcuZ2V0KCkgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RX
aXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkg
eworICAgICAgICBFWFBFQ1RfTlVMTChtYW5pZmVzdCk7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGxpbmsgcmVsPVwibWFuaWZl
c3RcIiBocmVmPVwiaW52YWxpZHVybDovL3BhdGhcIj4iXTsKKyAgICBbd2ViVmlldyBfZ2V0QXBw
bGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKG1hbmlmZXN0KTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRv
bmUgPSBmYWxzZTsKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0ID0gQHsgQCJuYW1l
IjogQCJUZXN0IiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1c
ImRhdGE6YXBwbGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwi
PiIsIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmpl
Y3Qgb3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBd
XV07CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhh
bmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBFWFBF
Q1RfVFJVRShbbWFuaWZlc3QubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJUZXN0Il0pOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIG1hbmlmZXN0T2JqZWN0ID0gQHsKKyAgICAgICAgQCJuYW1lIjogQCJB
IFdlYiBBcHBsaWNhdGlvbiIsCisgICAgICAgIEAic2hvcnRfbmFtZSI6IEAiV2ViQXBwIiwKKyAg
ICAgICAgQCJkZXNjcmlwdGlvbiI6IEAiSGVsbG8uIiwKKyAgICAgICAgQCJzdGFydF91cmwiOiBA
Imh0dHA6Ly9leGFtcGxlLmNvbS9hcHAvc3RhcnQiLAorICAgICAgICBAInNjb3BlIjogQCJodHRw
Oi8vZXhhbXBsZS5jb20vYXBwIiwKKyAgICB9OworICAgIE5TU3RyaW5nICpodG1sU3RyaW5nID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9
XCJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj4iLCBbW05TSlNPTlNl
cmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om1hbmlmZXN0T2JqZWN0IG9wdGlvbnM6MCBl
cnJvcjpuaWxdIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXV07CisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL2V4YW1wbGUuY29tL2FwcC9pbmRleCJdXTsKKyAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9u
TWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICpt
YW5pZmVzdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3QubmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJBIFdlYiBBcHBsaWNhdGlvbiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlm
ZXN0LnNob3J0TmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJXZWJBcHAiXSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKFttYW5pZmVzdC5hcHBsaWNhdGlvbkRlc2NyaXB0aW9uIGlzRXF1YWxUb1N0cmluZzpA
IkhlbGxvLiJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LnN0YXJ0VVJMIGlzRXF1
YWw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vYXBwL3N0YXJ0Il1d
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0LnNjb3BlIGlzRXF1YWw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vYXBwIl1dKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMzMyZmUy
NjFjNmUuLmE4YmM3Y2JmMjMwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTMwNiw0
ICszMDYsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMob2Jq
ZWN0IGNhbGxiYWNrKTsKKworICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4ob2Jq
ZWN0IGNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGM5MzM5ZjAxZjMwLi41NmIw
ZGNkZGI1NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI5OCw2ICsyOTgsMTEgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEdldEFwcGxpY2F0aW9u
TWFuaWZlc3QiKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPmRpZEdldEFwcGxpY2F0aW9uTWFu
aWZlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiRXJyb3IiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9y
TWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVua25v
d24iKSk7CiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgZXJyb3JNZXNzYWdlTmFt
ZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBjYjU2NzBiZTkx
ZC4uYWE5OGQwY2M1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNjUyLDYgKzY1Miw3IEBAIGVudW0gewogICAg
IFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRD
bGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lELAogICAgIERpZFJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCisgICAgR2V0QXBwbGljYXRpb25NYW5pZmVz
dENhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CiAKQEAg
LTE4NzQsNCArMTg3NSwxNyBAQCB1aW50NjRfdCBUZXN0UnVubmVyOjpkb21DYWNoZVNpemUoSlNT
dHJpbmdSZWYgb3JpZ2luKQogICAgIHJldHVybiBXS1VJbnQ2NEdldFZhbHVlKHN0YXRpY19jYXN0
PFdLVUludDY0UmVmPihyZXR1cm5EYXRhKSk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6Z2V0QXBw
bGljYXRpb25NYW5pZmVzdFRoZW4oSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRl
c3RSdW5uZXJDYWxsYmFjayhHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwgY2FsbGJh
Y2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0QXBwbGljYXRpb25NYW5pZmVz
dCIpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCgpCit7
CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJh
Y2tJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBkMzY5MTBkMDMxZS4uZDY0
NDk0MzE3Y2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC00MDUsNiArNDA1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7CiAgICAgdm9pZCBjYWxsRGlk
UmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKKyAgICAKKyAgICB2b2lkIGdl
dEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKEpTVmFsdWVSZWYpOworICAgIHZvaWQgZGlkR2V0QXBw
bGljYXRpb25NYW5pZmVzdCgpOwogCiBwcml2YXRlOgogICAgIFRlc3RSdW5uZXIoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMmNhN2U1MjNjYzIuLmFi
MzRlNDQ2M2FiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApA
QCAtMTI0NSw2ICsxMjQ1LDE5IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0KEFkb3B0V0ssIFdLVUludDY0Q3JlYXRlKGRvbUNh
Y2hlU2l6ZSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICAKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldEFwcGxpY2F0aW9u
TWFuaWZlc3QiKSkgeworI2lmZGVmIF9fQkxPQ0tTX18KKyAgICAgICAgV0tQYWdlR2V0QXBwbGlj
YXRpb25NYW5pZmVzdF9iKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5wYWdlKCksIF57CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2Fn
ZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEaWRHZXRBcHBs
aWNhdGlvbk1hbmlmZXN0IikpOworICAgICAgICAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgfSk7CisjZWxzZQorICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpOworICAgICAg
ICAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsK
KyNlbmRpZgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328608</attachid>
            <date>2017-12-06 12:39:09 -0800</date>
            <delta_ts>2017-12-06 13:53:57 -0800</delta_ts>
            <desc>Patch for landing v4</desc>
            <filename>3pflv4.patch</filename>
            <type>text/plain</type>
            <size>73078</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDlmMzM3ZmZlODEzYTg4Zjg0MjM5ZThhMTNlY2UxNDRjNmRmMGUzZDIKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjA0OjU5IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3Ig
ZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjk0CiAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAogICAgCiAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAg
IFRlc3Q6IGFwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwKICAgIAog
ICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgog
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CiAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKToKICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgogICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5n
KToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFBy
b3BlcnR5SW52YWxpZFVSTCk6CiAgICAgICAgRHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5j
ZSB0aGUgd2FybmluZyBpcyBwcmVmaXhlZCB3aXRoICJwYXJzaW5nCiAgICAgICAgYXBwbGljYXRp
b24gbWFuaWZlc3Q6IiwgcmVtb3ZlIGEgcmVkdW5kYW50IHVzZSBvZiAiYXBwbGljYXRpb24gbWFu
aWZlc3QiLgogICAgCiAgICBTb3VyY2UvV2ViS2l0OgogICAgCiAgICBBZGQgYSBuZXcgbWV0aG9k
IC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0gdG8gcmVxdWVzdAogICAgdGhlIG1hbmlmZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVu
dCBwYWdlLgogICAgCiAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CiAgICAqIFNoYXJlZC9D
b2NvYS9BUElPYmplY3QubW06CiAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CiAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5o
LgogICAgICAgIEFkZCBhIG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlm
ZXN0cy4KICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CiAgICAoV0tQYWdlR2V0QXBw
bGljYXRpb25NYW5pZmVzdF9iKToKICAgICAgICBBZGQgYSBDIHZlcnNpb24gb2YgdGhpcyBTUEkg
Zm9yIFdlYktpdFRlc3RSdW5uZXIuCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
Lmg6CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgogICAgKC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgogICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0Lmgu
CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRk
ZWQuCiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGVuY29kZVdpdGhDb2RlcjpdKToKICAgICgrW19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJM
OmRvY3VtZW50VVJMOl0pOgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBfYXBpT2JqZWN0
XSk6CiAgICAobnVsbGFibGVOU1N0cmluZyk6CiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IG5hbWVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2hvcnROYW1lXSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uRGVzY3JpcHRpb25dKToKICAgICgt
W19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2NvcGVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3Qgc3RhcnRVUkxdKToKICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KICAgIChBUEk6OndyYXBw
ZXIpOgogICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6YXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKToKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgogICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CiAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFw
cGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKICAgIAogICAg
VG9vbHM6CiAgICAKICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
bGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCiAgICAgICAgQWRkZWQgdHdvIEFQSSB0ZXN0cyBm
b3IgX1dLQXBwbGljYXRpb25NYW5pZmVzdDoKICAgICAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRp
b25NYW5pZmVzdCdzIGNvbmZvcm1hbmNlIHRvIE5TQ29kaW5nLgogICAgICAgIC0gVGVzdGluZyAt
W1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpd
LCB2ZXJpZnlpbmcgdGhlCiAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlc3VsdGluZyBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LgogICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgogICAgCiAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CiAg
ICAgICAgQWRkZWQgYSBuZXcgdGVzdFJ1bm5lciBtZXRob2QgZ2V0QXBwbGljYXRpb25NYW5pZmVz
dFRoZW4oKSwgdXNlZCBieSB0aGUgTGF5b3V0VGVzdHMKICAgICAgICB0byByZXF1ZXN0IHRoZSBk
b2N1bWVudCBsb2FkIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0LiBUaGUgbGF5b3V0IHRlc3RzIGZv
cm1lcmx5IGNhbGxlZAogICAgICAgIGFuIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZl
c3RUaGVuKCksIGJ1dCBJIGFkZGVkICdBcHBsaWNhdGlvbicgdG8gc29tZXdoYXQKICAgICAgICBk
aWZmZXJlbnRpYXRlIHRoaXMgZnJvbSB0aGUgYXBwIGNhY2hlIG1hbmlmZXN0LgogICAgCiAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgogICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKICAgIChXVFI6OlRl
c3RSdW5uZXI6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKToKICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CiAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAg
CiAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAgU2tpcCB0aGUgYXBwIG1hbmlmZXN0LXJl
bGF0ZWQgbGF5b3V0IHRlc3RzIGZvciBub3cgd2hpbGUgdGhlIGZlYXR1cmUgaXMgc3RpbGwgZGlz
YWJsZWQuCiAgICAgICAgQWxzbyBtb3ZlZCB0aGUgZXhwZWN0YXRpb25zIGRpc2FibGluZyB0aGUg
bWFuaWZlc3Qtc3JjIGxheW91dCB0ZXN0cyAod2hpY2ggbm93IHBhc3MKICAgICAgICB3aGVuIHRo
ZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgog
ICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQ6
IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1s
OiBBZGRlZC4KICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0
bWw6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSBvbmx5IHRoZSBm
aXJzdCBtYW5pZmVzdCBsaW5rIGlzIGxvYWRlZCB3aGVuIHRoZXJlCiAgICAgICAgYXJlIG11bHRp
cGxlIG9uIHRoZSBwYWdlLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZl
bG9wZXItd2FybmluZ3MubWFuaWZlc3Q6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHdhcm5pbmdzIGdlbmVyYXRlZCB3aGlsZSBwYXJzaW5nIHRoZSBtYW5p
ZmVzdCBhcmUKICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWw6
CiAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBs
aWNhdGlvbk1hbmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CiAgICAgICAg
VXBkYXRlZCB0aGUgZXhwZWN0ZWQgY29uc29sZSBtZXNzYWdlIHRvIHJlZmxlY3QgdGhlIGN1cnJl
bnQgd29yZGluZyBmb3IgQ1NQIHZpb2xhdGlvbnMuCiAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWw6CiAgICAgICAg
UmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb246CiAgICAgICAgUmVtb3ZlZCBhIHRyYWls
aW5nIG5ld2xpbmUgdGhhdCB3YXMgY2F1c2luZyBKU09OIHBhcnNpbmcgdG8gZmFpbC4KCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZjA3ODdjNGJhNDIuLmZkMmFkNjlmN2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTct
MTItMDEgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBT
a2lwIHRoZSBhcHAgbWFuaWZlc3QtcmVsYXRlZCBsYXlvdXQgdGVzdHMgZm9yIG5vdyB3aGlsZSB0
aGUgZmVhdHVyZSBpcyBzdGlsbCBkaXNhYmxlZC4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhl
IGV4cGVjdGF0aW9ucyBkaXNhYmxpbmcgdGhlIG1hbmlmZXN0LXNyYyBsYXlvdXQgdGVzdHMgKHdo
aWNoIG5vdyBwYXNzCisgICAgICAgICAgICB3aGVuIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRv
IHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFu
aWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbDog
QWRkZWQuCisgICAgICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgb25seSB0aGUg
Zmlyc3QgbWFuaWZlc3QgbGluayBpcyBsb2FkZWQgd2hlbiB0aGVyZQorICAgICAgICAgICAgYXJl
IG11bHRpcGxlIG9uIHRoZSBwYWdlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvcmVz
b3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICAgICBB
ZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3YXJuaW5ncyBnZW5lcmF0ZWQgd2hpbGUg
cGFyc2luZyB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbDoKKyAgICAgICAgICAgIFJlcGxhY2VkIGNhbGxzIHRv
IGdldE1hbmlmZXN0VGhlbigpIHdpdGggZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oKS4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVz
dC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICBVcGRhdGVkIHRoZSBleHBl
Y3RlZCBjb25zb2xlIG1lc3NhZ2UgdG8gcmVmbGVjdCB0aGUgY3VycmVudCB3b3JkaW5nIGZvciBD
U1AgdmlvbGF0aW9ucy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sOgorICAgICAgICAgICAgUmVwbGFj
ZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
VGhlbigpLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbjoKKyAgICAgICAgICAgIFJlbW92ZWQgYSB0
cmFpbGluZyBuZXdsaW5lIHRoYXQgd2FzIGNhdXNpbmcgSlNPTiBwYXJzaW5nIHRvIGZhaWwuCisK
IDIwMTctMTItMDYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFNv
bWUgaU9TIHRlc3RzIGZhaWxpbmcgYWZ0ZXIgQU5HTEUgdXBkYXRlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAwYTQ1YjFmMzEyZi4uYzU5MDBiZmJiMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTA5
Myw4ICsxMDkzLDYgQEAgd2Via2l0Lm9yZy9iLzExMTg2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9ldmFsLWJsb2NrZWQtYW5kLXMKIHdlYmtpdC5vcmcvYi8xNTMx
NDggaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZXZhbC1hbGxvd2Vk
LWluLXJlcG9ydC1vbmx5LW1vZGUtYW5kLXNlbmRzLXJlcG9ydC5waHAKIHdlYmtpdC5vcmcvYi8x
NTMxNTAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2NoaWxk
LXNyYy9mcmFtZS1maXJlcy1sb2FkLWV2ZW50LXdoZW4tYmxvY2tlZC5odG1sCiB3ZWJraXQub3Jn
L2IvMTUzMTUwIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9j
aGlsZC1zcmMvZnJhbWUtZmlyZXMtbG9hZC1ldmVudC13aGVuLXJlZGlyZWN0LWJsb2NrZWQuaHRt
bAotd2Via2l0Lm9yZy9iLzE1MzE1MiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sICMgTmVlZHMgdGVzdFJ1bm5lci5nZXRN
YW5pZmVzdFRoZW4oKQotd2Via2l0Lm9yZy9iLzE1MzE1MiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sICMgTmVlZHMgdGVz
dFJ1bm5lci5nZXRNYW5pZmVzdFRoZW4oKQogd2Via2l0Lm9yZy9iLzE1MzE1NSBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1iYXNpYy1ibG9j
a2VkLWVycm9yLWV2ZW50Lmh0bWwKIHdlYmtpdC5vcmcvYi8xNTMxNTUgaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFzaC1iYXNpYy1ibG9ja2VkLWVy
cm9yLWV2ZW50Lmh0bWwKIHdlYmtpdC5vcmcvYi8xNTMxNTUgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFzaC1zdmctc3R5bGUtYmFzaWMtYmxvY2tl
ZC1lcnJvci1ldmVudC5odG1sCkBAIC0xNjMzLDMgKzE2MzEsOSBAQCB3ZWJraXQub3JnL2IvMTc5
Mjg3IGh0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvQW5pbWF0aW9uVGltZWxpbmUv
ZG9jdW1lbgogd2Via2l0Lm9yZy9iLzE3OTI4NyBodHRwL3dwdC93ZWItYW5pbWF0aW9ucy90aW1p
bmctbW9kZWwvYW5pbWF0aW9ucy9zZXQtdGhlLWFuaW1hdGlvbi1zdGFydC10aW1lLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTc3NDQwIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vcmVsYXhpbmctdGhlLXNhbWUtb3JpZ2lu
LXJlc3RyaWN0aW9uL2RvY3VtZW50X2RvbWFpbl9zZXR0ZXJfbnVsbC50ZW50YXRpdmUuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCisKKyMgQXBwbGljYXRpb24gTWFuaWZlc3QgdGVzdHMKK3dlYmtpdC5v
cmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFu
aWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE1MzE1MiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tl
ZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTU4MjA1IGFwcGxpY2F0aW9ubWFuaWZlc3Qv
IFsgU2tpcCBdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
ZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjMyMGY0NTJlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFBhcnNpbmcgYXBwbGljYXRp
b24gbWFuaWZlc3QgZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0OiBUaGUgdmFsdWUgb2YgInN0
YXJ0X3VybCIgaXMgbm90IGEgdmFsaWQgVVJMLgorQ09OU09MRSBNRVNTQUdFOiBQYXJzaW5nIGFw
cGxpY2F0aW9uIG1hbmlmZXN0IGRldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogVGhlIHZhbHVl
IG9mICJuYW1lIiBpcyBub3QgYSBzdHJpbmcuCitBTEVSVDogUGFzcworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sIGIv
TGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2U1YmM3N2JmNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13
YXJuaW5ncy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9
InJlc291cmNlcy9kZXZlbG9wZXItd2FybmluZ3MubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZ2V0QXBwbGljYXRpb25N
YW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJQYXNzIik7CisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0pOworfQorPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3Mt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MGM3
ODk2MTE2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZl
c3QvbXVsdGlwbGUtbGlua3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorbXVsdGlwbGUt
bGlua3MuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKK3VybHNjaGVtZTovLzEgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgdXJsc2NoZW1lOi8vMSwgbWFpbiBkb2N1bWVudCBVUkwg
bXVsdGlwbGUtbGlua3MuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChu
dWxsKQordXJsc2NoZW1lOi8vMSAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBk
b21haW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtMTAwMiwgZmFpbGluZyBVUkwgInVybHNjaGVt
ZTovLzEiPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211
bHRpcGxlLWxpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRp
cGxlLWxpbmtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAw
N2JiOGY4MDYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5p
ZmVzdC9tdWx0aXBsZS1saW5rcy5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxsaW5rIHJlbD0ibWFu
aWZlc3QiIGhyZWY9InVybHNjaGVtZTovLzEiIG1lZGlhPSJwcmludCI+Cis8bGluayByZWw9Im1h
bmlmZXN0IiBocmVmPSJ1cmxzY2hlbWU6Ly8yIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9KTsKK30KKzwvc2NyaXB0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdCBi
L0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJu
aW5ncy5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmEw
YmIwODdhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L3Jlc291cmNlcy9kZXZlbG9wZXItd2FybmluZ3MubWFuaWZlc3QKQEAgLTAsMCArMSw0IEBA
Cit7CisgICAgIm5hbWUiOiAwLAorICAgICJzdGFydF91cmwiOiAiaHR0cDo/IgorfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9t
YW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sCmluZGV4IGRkYmQ0N2QyN2UyLi5lZjVlMTBhZWRiOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxsb3dl
ZC5odG1sCkBAIC00LDcgKzQsNyBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgYWxlcnQoIlBhc3MiKTsKICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2Vk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dAppbmRleCA3MDZi
ODg1YzY1Ni4uMmY2NTFjNmQ4ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCBtYW5pZmVzdCBmcm9tICdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0
LnRlc3QvbWFuaWZlc3QuanNvbicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIm1hbmlmZXN0LXNyYyAnbm9uZSciLgot
CitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNv
biBiZWNhdXNlIGl0IGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWFuaWZlc3Qtc3JjIGRpcmVjdGl2
ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuCiBBTEVSVDogUGFzcwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbAppbmRl
eCBhN2RmNzE0NmJmNC4uY2Q0ZDFmN2I4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2Vk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbApAQCAtNCw3ICs0LDcgQEAKICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVy
LmdldE1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5nZXRBcHBs
aWNhdGlvbk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFsZXJ0KCJQYXNz
Iik7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24gYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0
Lmpzb24KaW5kZXggZGE2ZGNmOGI1ODMuLjdmZTg4NGQ3YTA2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50
ZXN0L21hbmlmZXN0Lmpzb24KKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3QudGVzdC9tYW5pZmVzdC5qc29uCkBAIC0xLDQg
KzEsNCBAQAogewogICAgICJuYW1lIjogIlN1cGVyIFJhY2VyIDIwMDAiLAogICAgICJzdGFydF91
cmwiOiAiL3N0YXJ0Lmh0bWwiCi19Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGNkZTIyNTExYWQ2Li43OGEyY2UxYThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE3LTEyLTAxICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRo
ZSBtYW5pZmVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMjk0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzM0NzQ3OTY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVGVzdDogYXBwbGljYXRpb25tYW5p
ZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlm
ZXN0UHJvcGVydHlJbnZhbGlkVVJMKToKKyAgICAgICAgICAgIERyaXZlLWJ5IHdvcmRpbmcgY2hh
bmdlcy4gU2luY2UgdGhlIHdhcm5pbmcgaXMgcHJlZml4ZWQgd2l0aCAicGFyc2luZworICAgICAg
ICAgICAgYXBwbGljYXRpb24gbWFuaWZlc3Q6IiwgcmVtb3ZlIGEgcmVkdW5kYW50IHVzZSBvZiAi
YXBwbGljYXRpb24gbWFuaWZlc3QiLgorCiAyMDE3LTEyLTA2ICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSBkb2N1
bWVudC5oYXNTdG9yYWdlQWNjZXNzIGEgZnVuY3Rpb24gYW5kIGFsd2F5cyBhbGxvdyBhY2Nlc3Mg
Zm9yIHNhbWUtb3JpZ2luIGlmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCmlu
ZGV4IGVmOTYyNjkwOTY3Li5jNzBlN2U2MGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5p
ZmVzdC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQogCiAjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsOCArMzgsMzYgQEAgc3RydWN0IEFwcGxpY2F0aW9uTWFu
aWZlc3QgewogICAgIFN0cmluZyBkZXNjcmlwdGlvbjsKICAgICBVUkwgc2NvcGU7CiAgICAgVVJM
IHN0YXJ0VVJMOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG5hbWUgPDwgc2hvcnROYW1l
IDw8IGRlc2NyaXB0aW9uIDw8IHNjb3BlIDw8IHN0YXJ0VVJMOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBBcHBsaWNhdGlv
bk1hbmlmZXN0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBBcHBsaWNhdGlvbk1h
bmlmZXN0IHJlc3VsdDsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm5hbWUpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnNob3J0TmFtZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQuZGVzY3JpcHRpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNjb3BlKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zdGFy
dFVSTCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxp
Y2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNl
ci5jcHAKaW5kZXggNDY3ZTU2ODMxNGEuLjA5NzBhNTI3MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0
L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC03OSwxMiArNzksMTIgQEAgQXBwbGlj
YXRpb25NYW5pZmVzdCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZU1hbmlmZXN0KGNv
bnN0IFN0cmluZyYgdGV4dCwKIAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dN
YW5pZmVzdFByb3BlcnR5Tm90QVN0cmluZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBsb2dEZXZlbG9wZXJXYXJuaW5nKCJUaGUgXCIiICsgcHJvcGVydHlOYW1lICsgIlwiIGFw
cGxpY2F0aW9uIG1hbmlmZXN0IHByb3BlcnR5IGlzIG5vdCBhIHN0cmluZy4iKTsKKyAgICBsb2dE
ZXZlbG9wZXJXYXJuaW5nKCJUaGUgdmFsdWUgb2YgXCIiICsgcHJvcGVydHlOYW1lICsgIlwiIGlz
IG5vdCBhIHN0cmluZy4iKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjps
b2dNYW5pZmVzdFByb3BlcnR5SW52YWxpZFVSTChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkK
IHsKLSAgICBsb2dEZXZlbG9wZXJXYXJuaW5nKCJUaGUgXCIiICsgcHJvcGVydHlOYW1lICsgIlwi
IGFwcGxpY2F0aW9uIG1hbmlmZXN0IHByb3BlcnR5IGlzIG5vdCBhIHZhbGlkIFVSTC4iKTsKKyAg
ICBsb2dEZXZlbG9wZXJXYXJuaW5nKCJUaGUgdmFsdWUgb2YgXCIiICsgcHJvcGVydHlOYW1lICsg
IlwiIGlzIG5vdCBhIHZhbGlkIFVSTC4iKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyOjpsb2dEZXZlbG9wZXJXYXJuaW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNGU3MWRiYTY1NjkuLjE4OWU4NDBiYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBA
CisyMDE3LTEyLTAxICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRoZSBtYW5p
ZmVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
Mjk0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzM0NzQ3OTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCAtW1dLV2ViVmll
dyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdIHRvIHJlcXVl
c3QKKyAgICAgICAgdGhlIG1hbmlmZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBwYWdl
LgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlv
bk1hbmlmZXN0LmguCisgICAgICAgICAgICBBZGQgYSBuZXcgQVBJIG9iamVjdCB0eXBlIGZvciBh
cHBsaWNhdGlvbiBtYW5pZmVzdHMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IpOgorICAgICAgICAg
ICAgQWRkIGEgQyB2ZXJzaW9uIG9mIHRoaXMgU1BJIGZvciBXZWJLaXRUZXN0UnVubmVyLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZ2V0QXBw
bGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06
IEFkZGVkLgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6
XSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgZW5jb2RlV2l0aENvZGVyOl0p
OgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RG
cm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgKC1bX1dLQXBwbGlj
YXRpb25NYW5pZmVzdCBfYXBpT2JqZWN0XSk6CisgICAgICAgIChudWxsYWJsZU5TU3RyaW5nKToK
KyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBuYW1lXSk6CisgICAgICAgICgtW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2hvcnROYW1lXSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgYXBwbGljYXRpb25EZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0IHNjb3BlXSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZl
c3Qgc3RhcnRVUkxdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0
aW9uTWFuaWZlc3RJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oLgorICAgICAgICAoQVBJ
Ojp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2spOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZp
bmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDE3LTEyLTA2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSBkb2N1bWVudC5oYXNTdG9y
YWdlQWNjZXNzIGEgZnVuY3Rpb24gYW5kIGFsd2F5cyBhbGxvdyBhY2Nlc3MgZm9yIHNhbWUtb3Jp
Z2luIGlmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBmMDc0MTRj
ODdhOS4uNzU1NzJhNmRiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAg
LTk3LDYgKzk3LDkgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gVUlQcm9jZXNzIHR5
cGVzCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLAorI2lmIEVOQUJMRShBUFBMSUNB
VElPTl9NQU5JRkVTVCkKKyAgICAgICAgQXBwbGljYXRpb25NYW5pZmVzdCwKKyNlbmRpZgogICAg
ICAgICBBdHRhY2htZW50LAogICAgICAgICBBdXRvbWF0aW9uU2Vzc2lvbiwKICAgICAgICAgQmFj
a0ZvcndhcmRMaXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4
IGRmYmE5ZmQ5NGYxLi5jNzViMjMxNDY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQpAQCAtODEsNiArODEsMTAgQEAKICNpbXBvcnQgIl9XS1VzZXJTdHlsZVNoZWV0
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmVJbnRlcm5hbC5oIgogCisj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2ltcG9ydCAiX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmgiCisjZW5kaWYKKwogc3RhdGljIGNvbnN0IHNpemVfdCBtaW5pbXVt
T2JqZWN0QWxpZ25tZW50ID0gODsKIHN0YXRpY19hc3NlcnQobWluaW11bU9iamVjdEFsaWdubWVu
dCA+PSBhbGlnbm9mKHZvaWQqKSwgIk9iamVjdHMgc2hvdWxkIGFsd2F5cyBiZSBhdCBsZWFzdCBw
b2ludGVyLWFsaWduZWQuIik7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1FeHRyYVNwYWNl
Rm9yQWxpZ25tZW50ID0gbWluaW11bU9iamVjdEFsaWdubWVudCAtIGFsaWdub2Yodm9pZCopOwpA
QCAtMTE5LDYgKzEyMywxMiBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwg
VHlwZSB0eXBlKQogICAgIC8vIEFQSTo6T2JqZWN0LCBzbyB0aGV5IGFyZSBhbGxvY2F0ZWQgdXNp
bmcgK2FsbG9jLgogCiAgICAgc3dpdGNoICh0eXBlKSB7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQorICAgIGNhc2UgVHlwZTo6QXBwbGljYXRpb25NYW5pZmVzdDoKKyAgICAgICAg
d3JhcHBlciA9IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7
CisjZW5kaWYKKwogICAgIGNhc2UgVHlwZTo6QXJyYXk6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tO
U0FycmF5IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZWQzMzE0OGJmNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgorCituYW1lc3Bh
Y2UgQVBJIHsKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK2NsYXNzIEFwcGxp
Y2F0aW9uTWFuaWZlc3QgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9u
TWFuaWZlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBs
aWNhdGlvbk1hbmlmZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXBw
bGljYXRpb25NYW5pZmVzdChhcHBsaWNhdGlvbk1hbmlmZXN0KSk7CisgICAgfQorCisgICAgZXhw
bGljaXQgQXBwbGljYXRpb25NYW5pZmVzdChjb25zdCBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlm
ZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgICAgICA6IG1fYXBwbGljYXRpb25NYW5pZmVz
dChhcHBsaWNhdGlvbk1hbmlmZXN0KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBXZWJDb3Jl
OjpBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0OyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdCBtX2FwcGxpY2F0aW9uTWFuaWZlc3Q7Cit9OworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAppbmRleCBmMjI0NGQ3NDM3NC4uMzJlNGY0YWZkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjc2MCwzICsyNzYwLDE3IEBAIFByb2Nlc3NJRCBXS1Bh
Z2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSkKIHsKICAgICByZXR1cm4gdG9J
bXBsKHBhZ2UpLT5wcm9jZXNzSWRlbnRpZmllcigpOwogfQorCisjaWZkZWYgX19CTE9DS1NfXwor
dm9pZCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0X2IoV0tQYWdlUmVmIHBhZ2UsIFdLUGFn
ZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RCbG9jayBibG9jaykKK3sKKyNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCisgICAgdG9JbXBsKHBhZ2UpLT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KFtibG9ja10oY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
PiAmbWFuaWZlc3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpIHsKKyAgICAgICAgYmxvY2soKTsKKyAg
ICB9KTsKKyNlbHNlIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBVTlVTRURf
UEFSQU0ocGFnZSk7CisgICAgYmxvY2soKTsKKyNlbmRpZiAvLyBub3QgRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VQcml2YXRlLmgKaW5kZXggMGRmODM2NDg5NGUuLmJiMjZkZThhYmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCkBAIC0xNzgsNiAr
MTc4LDExIEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFnZVNldElnbm9yZXNWaWV3cG9ydFNjYWxlTGlt
aXRzKFdLUGFnZVJlZiBwYWdlLCBib29sIGlnbm9yZXNWCiAKIFdLX0VYUE9SVCBXS1Byb2Nlc3NJ
RCBXS1BhZ2VHZXRQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VSZWYgcGFnZSk7CiAKKyNpZmRlZiBf
X0JMT0NLU19fCit0eXBlZGVmIHZvaWQgKF5XS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Qmxv
Y2spKHZvaWQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9i
KFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0QmxvY2sgYmxvY2sp
OworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1ZTQxNmNkOGJkOC4u
YTI5ZGJjYjFmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMTE3LDYgKzExNywxMCBAQAogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4v
ZHlsZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQorI2ltcG9ydCAiX1dLQXBwbGljYXRpb25NYW5pZmVzdElu
dGVybmFsLmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbXBvcnQg
IldLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIgogI2VuZGlmCkBAIC00MzQ0LDYgKzQzNDgs
MjUgQEAgLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhDb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvcgogICAgIH0pOwogfQogCistICh2b2lkKV9nZXRB
cHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0ICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQorICAgIF9wYWdlLT5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0LCBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgVU5VU0VEKGVycm9yKTsK
KyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBpZiAobWFuaWZl
c3QpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFwaU1hbmlmZXN0ID0gQVBJOjpBcHBsaWNhdGlv
bk1hbmlmZXN0OjpjcmVhdGUoKm1hbmlmZXN0KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3cmFwcGVyKGFwaU1hbmlmZXN0KSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9CisgICAgfSk7Cisj
ZWxzZQorICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIobmlsKTsKKyNlbmRpZgorfQorCiAtIChfV0tQYWdpbmF0aW9uTW9kZSlfcGFnaW5hdGlvbk1v
ZGUKIHsKICAgICBzd2l0Y2ggKF9wYWdlLT5wYWdpbmF0aW9uTW9kZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRl
eCA5NjZmYjliYTE5Yi4uNTdkODIyZjc5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtOTYsNiArOTYsNyBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2VuZGlmCiAKIEBj
bGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0OwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CiBA
Y2xhc3MgX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKQEAgLTMwNyw2ICszMDgsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogLSAodm9pZClfZ2V0V2ViQXJj
aGl2ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9y
ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZ2V0Q29udGVudHNBc1N0cmluZ1dpdGhD
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKiwgTlNFcnJvciAqKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CiAK
Ky0gKHZvaWQpX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFBhZ2luYXRpb25Nb2RlOikgX1dLUGFnaW5hdGlv
bk1vZGUgX3BhZ2luYXRpb25Nb2RlOwogLy8gV2hldGhlciB0aGUgY29sdW1uLWJyZWFrLXtiZWZv
cmUsYWZ0ZXJ9IHByb3BlcnRpZXMgYXJlIHJlc3BlY3RlZCBpbnN0ZWFkIG9mIHRoZQogLy8gcGFn
ZS1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9wZXJ0aWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYxYzUwZjJiZTEwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0
aW9uTWFuaWZlc3QuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgOiBOU09iamVjdCA8
TlNDb2Rpbmc+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUsIGNv
cHkpIE5TU3RyaW5nICpuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxs
YWJsZSwgY29weSkgTlNTdHJpbmcgKnNob3J0TmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICphcHBsaWNhdGlvbkRlc2NyaXB0aW9u
OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNVUkwg
KnNjb3BlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqc3Rh
cnRVUkw7CisKKysgKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0
RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBtYW5pZmVzdFVSTDooTlNVUkwgKiltYW5pZmVzdFVS
TCBkb2N1bWVudFVSTDoobnVsbGFibGUgTlNVUkwgKilkb2N1bWVudFVSTDsKKworQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZjVl
OWExNTk5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
SW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPFdlYkNvcmUvQXBw
bGljYXRpb25NYW5pZmVzdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0CisKKyNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKK3sKKyAgICBOU1N0cmluZyAqbmFtZSA9IFthRGVj
b2RlciBkZWNvZGVPYmplY3RGb3JLZXk6QCJuYW1lIl07CisgICAgTlNTdHJpbmcgKnNob3J0TmFt
ZSA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RGb3JLZXk6QCJzaG9ydF9uYW1lIl07CisgICAgTlNT
dHJpbmcgKmRlc2NyaXB0aW9uID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdEZvcktleTpAImRlc2Ny
aXB0aW9uIl07CisgICAgTlNVUkwgKnNjb3BlVVJMID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdEZv
cktleTpAInNjb3BlIl07CisgICAgTlNVUkwgKnN0YXJ0VVJMID0gW2FEZWNvZGVyIGRlY29kZU9i
amVjdEZvcktleTpAInN0YXJ0X3VybCJdOworCisgICAgV2ViQ29yZTo6QXBwbGljYXRpb25NYW5p
ZmVzdCBjb3JlQXBwbGljYXRpb25NYW5pZmVzdCB7CisgICAgICAgIFdURjo6U3RyaW5nKG5hbWUp
LAorICAgICAgICBXVEY6OlN0cmluZyhzaG9ydE5hbWUpLAorICAgICAgICBXVEY6OlN0cmluZyhk
ZXNjcmlwdGlvbiksCisgICAgICAgIFdlYkNvcmU6OlVSTChzY29wZVVSTCksCisgICAgICAgIFdl
YkNvcmU6OlVSTChzdGFydFVSTCkKKyAgICB9OworCisgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVj
dEluV3JhcHBlcjxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+KHNlbGYsIFdURk1vdmUoY29yZUFw
cGxpY2F0aW9uTWFuaWZlc3QpKTsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRl
YWxsb2MKK3sKKyAgICBfYXBwbGljYXRpb25NYW5pZmVzdC0+fkFwcGxpY2F0aW9uTWFuaWZlc3Qo
KTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6
KE5TQ29kZXIgKilhQ29kZXIKK3sKKyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLm5hbWUg
Zm9yS2V5OkAibmFtZSJdOworICAgIFthQ29kZXIgZW5jb2RlT2JqZWN0OnNlbGYuc2hvcnROYW1l
IGZvcktleTpAInNob3J0X25hbWUiXTsKKyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpzZWxmLmFw
cGxpY2F0aW9uRGVzY3JpcHRpb24gZm9yS2V5OkAiZGVzY3JpcHRpb24iXTsKKyAgICBbYUNvZGVy
IGVuY29kZU9iamVjdDpzZWxmLnNjb3BlIGZvcktleTpAInNjb3BlIl07CisgICAgW2FDb2RlciBl
bmNvZGVPYmplY3Q6c2VsZi5zdGFydFVSTCBmb3JLZXk6QCJzdGFydF91cmwiXTsKK30KKworKyAo
X1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNT
dHJpbmcgKilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJM
OihOU1VSTCAqKWRvY3VtZW50VVJMCit7CisgICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpzb24pLCBXZWJDb3Jl
OjpVUkwobWFuaWZlc3RVUkwpLCBXZWJDb3JlOjpVUkwoZG9jdW1lbnRVUkwpKTsKKyAgICByZXR1
cm4gW0FQSTo6d3JhcHBlcihBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0ZShtYW5pZmVz
dCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2Jq
ZWN0Cit7CisgICAgcmV0dXJuICpfYXBwbGljYXRpb25NYW5pZmVzdDsKK30KKworc3RhdGljIE5T
U3RyaW5nICpudWxsYWJsZU5TU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgcmV0dXJuIHN0cmluZy5pc051bGwoKSA/IG5pbCA6IChOU1N0cmluZyAqKXN0cmluZzsKK30K
KworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgcmV0dXJuIG51bGxhYmxlTlNTdHJpbmcoX2Fw
cGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5uYW1lKTsKK30KKworLSAo
TlNTdHJpbmcgKilzaG9ydE5hbWUKK3sKKyAgICByZXR1cm4gbnVsbGFibGVOU1N0cmluZyhfYXBw
bGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLnNob3J0TmFtZSk7Cit9CisK
Ky0gKE5TU3RyaW5nICopYXBwbGljYXRpb25EZXNjcmlwdGlvbgoreworICAgIHJldHVybiBudWxs
YWJsZU5TU3RyaW5nKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCku
ZGVzY3JpcHRpb24pOworfQorCistIChOU1VSTCAqKXNjb3BlCit7CisgICAgcmV0dXJuIF9hcHBs
aWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkuc2NvcGU7Cit9CisKKy0gKE5T
VVJMICopc3RhcnRVUkwKK3sKKyAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxp
Y2F0aW9uTWFuaWZlc3QoKS5zdGFydFVSTDsKK30KKworI2Vsc2UgLy8gRU5BQkxFKEFQUExJQ0FU
SU9OX01BTklGRVNUKQorCisrIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGljYXRpb25N
YW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJMICopbWFu
aWZlc3RVUkwgZG9jdW1lbnRVUkw6KE5TVVJMICopZG9jdW1lbnRVUkwKK3sKKyAgICBVTlVTRURf
UEFSQU0oanNvbik7CisgICAgVU5VU0VEX1BBUkFNKG1hbmlmZXN0VVJMKTsKKyAgICBVTlVTRURf
UEFSQU0oZG9jdW1lbnRVUkwpOworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIKK3sK
KyAgICBVTlVTRURfUEFSQU0oYURlY29kZXIpOworICAgIFtzZWxmIHJlbGVhc2VdOworICAgIHJl
dHVybiBuaWw7Cit9CisKKy0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopYUNvZGVy
Cit7CisgICAgVU5VU0VEX1BBUkFNKGFDb2Rlcik7Cit9CisKKy0gKE5TU3RyaW5nICopbmFtZQor
eworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopc2hvcnROYW1lCit7CisgICAg
cmV0dXJuIG5pbDsKK30KKworLSAoTlNTdHJpbmcgKilhcHBsaWNhdGlvbkRlc2NyaXB0aW9uCit7
CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNVUkwgKilzY29wZQoreworICAgIHJldHVybiBu
aWw7Cit9CisKKy0gKE5TVVJMICopc3RhcnRVUkwKK3sKKyAgICByZXR1cm4gbmlsOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCitAZW5kCisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYjg3ODg2YzE2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgIkFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNpbXBvcnQgIl9X
S0FwcGxpY2F0aW9uTWFuaWZlc3QuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5p
ZmVzdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVz
dDsKK30KKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK25hbWVzcGFjZSBBUEkg
eworCitpbmxpbmUgX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqd3JhcHBlcihBUEk6OkFwcGxpY2F0
aW9uTWFuaWZlc3QmIGFwcGxpY2F0aW9uTWFuaWZlc3QpCit7CisgICAgQVNTRVJUKFthcHBsaWNh
dGlvbk1hbmlmZXN0LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0IGNsYXNzXV0pOworICAgIHJldHVybiAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKWFwcGxp
Y2F0aW9uTWFuaWZlc3Qud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgX1dLQXBwbGlj
YXRpb25NYW5pZmVzdCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RT
dG9yYWdlPEFQSTo6QXBwbGljYXRpb25NYW5pZmVzdD4gX2FwcGxpY2F0aW9uTWFuaWZlc3Q7Cit9
CisKK0BlbmQKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCBjZDIwMzU1ZjAyYS4uNDk5NzVjZTg1YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTMxMyw2ICs1MzEzLDE3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjplZGl0aW5nUmFuZ2VDYWxsYmFjayhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBD
YWxsYmFja0lEIGNhCiAgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1
ZShyYW5nZSk7CiB9CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit2b2lkIFdl
YlBhZ2VQcm94eTo6YXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0T3JOdWxsLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8
QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrPihjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxi
YWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0
aFJldHVyblZhbHVlKG1hbmlmZXN0T3JOdWxsKTsKK30KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IE1h
Y2hTZW5kUmlnaHQmIHNlbmRSaWdodCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewpAQCAtNzIz
MSw0ICs3MjQyLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVBdHRhY2htZW50KGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oc3RkOjpudWxsb3B0LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtu
b3duKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fbG9hZERlcGVuZGVudFN0
cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTZiNWFlYjk3YzkuLjBkNWM4ZTFhMTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OCw2ICsxNTgsNyBAQCBj
bGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0SW5kaWNhdG9yOwogY2xhc3MgVmFsaWRhdGlv
bkJ1YmJsZTsKIAorc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CiBzdHJ1Y3QgRGljdGlvbmFy
eVBvcHVwSW5mbzsKIHN0cnVjdCBFeGNlcHRpb25EZXRhaWxzOwogc3RydWN0IEZpbGVDaG9vc2Vy
U2V0dGluZ3M7CkBAIC0yNjYsNiArMjY3LDEwIEBAIHN0cnVjdCBRdWV1ZWRUb3VjaEV2ZW50cyB7
CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90PiBW
YWxpZGF0ZUNvbW1hbmRDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmPiBSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2VDYWxsYmFjazsKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK3R5cGVkZWYg
R2VuZXJpY0NhbGxiYWNrPGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdD4mPiBBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2s7CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IEF0dHJpYnV0ZWRTdHJp
bmcmLCBjb25zdCBFZGl0aW5nUmFuZ2UmPiBBdHRyaWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFu
Z2VDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyYsIGRvdWJs
ZSwgYm9vbD4gRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2s7CkBAIC0xMjQ0LDYgKzEyNDksMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+JiYgbmV3Q29udGVudFR5cGUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5l
d0ZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHZvaWQgZ2V0QXBwbGlj
YXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNTA0LDYgKzE1MTMsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgdmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENh
bGxiYWNrSUQpOwogICAgIHZvaWQgZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jh
bmdlJiwgQ2FsbGJhY2tJRCk7CisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAg
IHZvaWQgYXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0lEKTsKKyNlbmRpZgogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgbWFjaFNlbmRSaWdodENhbGxiYWNrKGNvbnN0IFdlYkNv
cmU6Ok1hY2hTZW5kUmlnaHQmLCBDYWxsYmFja0lEKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDEyNjhjZTRiNzNi
Li4zYzE5MGU5ZjViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMTY3LDYgKzE2Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgRWRpdGluZ1JhbmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jh
bmdlIHJhbmdlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBVbnNpZ25lZENh
bGxiYWNrKHVpbnQ2NF90IHJlc3VsdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgUmVjdEZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soV2ViQ29yZTo6SW50UmVjdCByZWN0LCBz
dHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6Q2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBBcHBs
aWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2soc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlv
bk1hbmlmZXN0PiBtYW5pZmVzdCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5k
aWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgQXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJh
bmdlQ2FsbGJhY2soc3RydWN0IFdlYktpdDo6QXR0cmlidXRlZFN0cmluZyBzdHJpbmcsIHN0cnVj
dCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgRm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soU3RyaW5nIGZvbnROYW1lLCBk
b3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9IYXNNdWx0aXBsZUZvbnRzLCBXZWJLaXQ6OkNh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NDVlN2QzNmNhLi5kNzMwOWY2MDFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI4LDYg
KzEyMjgsMTAgQEAKIAkJNUNFODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhF
NjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLzsgfTsKIAkJNUNGRUNCMDQxRTFFRDFDQzAwRjg4
NTA0IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJNjE3QTUyRDgxRjQzQTlE
QTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFG
NDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKKwkJNjMxMDhGOTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9u
TWFuaWZlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDYzMTA4Rjk0MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjMxMDhGOTcx
Rjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NTFGOTY3MTlDMDBBMERC
ODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLzsgfTsKKwkJNjMxMDhGOTkxRjk2NzFG
NzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTgxRjk2NzFGNzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovOyB9OworCQk2MzQ4NDI1
MTFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM0ODQyNEYxRkIyNkU3MTAwOTQ2
RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLzsgfTsKIAkJNjM2MzUzQTUxRTk4NThE
RjAwMDlGOEFGIC8qIF9XS0dlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzRkFCRTE5MUU5NzBENjUw
MDMwMTFENSAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjNDMzJDMjUxRTk4MTBE
OTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyMzFFOTgxMEQ5MDA2OTlCRDAgLyog
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSAqLzsgfTsKIAkJNjNDMzJDMjYxRTk4MTBEOTAwNjk5
QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9s
b2NhdGlvblBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM2MTgsNiArMzYyMiwxMCBAQAogCQk1RDQ0MkE1NTE2RDU4NTY3MDBBQzMz
MzEgLyogUGx1Z2luU2VydmljZS5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9IFBsdWdpblNlcnZpY2Uu
ZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REFENzNGMTExNkZG
OTBDMDBFRTUzOTYgLyogQmFzZVRhcmdldC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBCYXNlVGFyZ2V0LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTYzMTA4Rjk0MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjMxMDhGOTUxRjk2NzE5QzAwQTBEQjg0IC8q
IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzEwOEY5
ODFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGlj
YXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzQzMyQzIzMUU5ODEwRDkwMDY5OUJEMCAv
KiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjNDMzJDMjQxRTk4MTBEOTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9z
aXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLR2VvbG9jYXRpb25Q
b3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2M0MzMkMyNzFFOTgxMTkw
MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTc5NSw2ICs1ODAzLDkgQEAKIAkJCQkzN0E1
RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJ
CQkzN0E1RTAxMTE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0g
Ki8sCiAJCQkJMzc5QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvSW50ZXJuYWwuaCAqLywKKwkJCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBw
bGljYXRpb25NYW5pZmVzdC5oICovLAorCQkJCTYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAvKiBf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovLAorCQkJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4
NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLywKIAkJCQlGNDQyOTE5MTFG
QTU5MTA3MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oICovLAogCQkJCUY0NDI5MTkzMUZBNTkz
MTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tICovLAogCQkJCUY0NDI5MTk1MUZBNTk0MkEw
MDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLywKQEAgLTcxOTUsNiArNzIwNiw3
IEBACiAJCQkJMzdDNEMwODMxODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1
MDEzMTE3NjVGNDUwMDc1NzU3MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3
QkFCIC8qIG1hYyAqLywKKwkJCQk2MzQ4NDI0RjFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGlj
YXRpb25NYW5pZmVzdC5oICovLAogCQkJCTJFNUM3NzBEMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElB
dHRhY2htZW50LmNwcCAqLywKIAkJCQkyRTVDNzcwQzFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0
YWNobWVudC5oICovLAogCQkJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0
aW9uQ2xpZW50LmggKi8sCkBAIC04NDYyLDYgKzg0NzQsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJ
MzdBNUUwMTQxOEJCRjkzRjAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzlBODczNjE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVk
RWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjMxMDhGOTYxRjk2NzE5
QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAvKiBfV0tB
dHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0Ug
LyogX1dLQXR0YWNobWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU3MTRDNTFD
MTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
QEAgLTg1MzcsNiArODU1MSw3IEBACiAJCQkJQTE5REQzQzAxRDA3RDE2ODAwQUM4MjNCIC8qIF9X
S1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTgy
RDVCNTFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdENzkyRDgxNzY3Q0NBMzAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQk2MzQ4NDI1MTFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRp
b25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY5NzAxMURCRTYwMzAwNjQ1NUIw
IC8qIEFQSUFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTVDNzcwRTFGQTdENDI5MDA1OTMy
QzMgLyogQVBJQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDODFENUQxQzIxRjM4
QjAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAx
MTAsNiArMTAxMjUsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAogCQkJCTM3QTVFMDEzMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mby5tbSBpbiBTb3VyY2VzICovLAorCQkJCTYzMTA4Rjk3MUY5NjcxOUMwMEEwREI4NCAv
KiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0MjkxOTQx
RkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5
OTBEMjhCMjFDNjUyMDk0MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gaW4gU291
cmNlcyAqLywKIAkJCQk5OTc4OEFDQzFGNDIxREUyMDBDMDgwMDAgLyogX1dLQXV0b21hdGlvblNl
c3Npb25Db25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA3ODY2YTc3ZTgzMi4uYWIwYTU2YmU0MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTg0MCw0ICsxODQwLDE1IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlm
aWVyLCBTaGFyCiAgICAgfQogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5p
ZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0KQoreworICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1
cm47CisKKyAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChj
YWxsYmFja0lkZW50aWZpZXIsIG1hbmlmZXN0KTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCA1YTIyZjBkNzY2YS4uMjkwZDFiYmVkM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC0yNjIsNiArMjYyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6Okxp
bmtJY29uJiwgdWludDY0X3Q+PiYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNv
bih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZp
bmFsOwogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHZvaWQgZmluaXNo
ZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3Qgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpIGZpbmFsOworI2VuZGlmCisKICAgICBX
ZWJGcmFtZSogbV9mcmFtZTsKICAgICBSZWZQdHI8UGx1Z2luVmlldz4gbV9wbHVnaW5WaWV3Owog
ICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUxOWZkNTI2NGQ3Li5hOTE4ZWM2
ZTVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTU4OTgsNCArNTg5OCwzMiBAQCBSZWZQdHI8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBXZWJQ
YWdlOjphdHRhY2htZW50RWxlbWVudFdpdGhJZGVudGlmaWVyKGNvbnN0IFN0cgogCiAjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKK3ZvaWQgV2ViUGFnZTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCit7CisgICAgQVNTRVJUKGNhbGxiYWNrSUQuaXNWYWxpZCgpKTsKKyAgICBE
b2N1bWVudCogbWFpbkZyYW1lRG9jdW1lbnQgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1haW5GcmFtZURvY3VtZW50
ID8gbWFpbkZyYW1lRG9jdW1lbnQtPmxvYWRlcigpIDogbnVsbHB0cjsKKworICAgIGlmICghbG9h
ZGVyKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXBwbGljYXRpb25N
YW5pZmVzdENhbGxiYWNrKHN0ZDo6bnVsbG9wdCwgY2FsbGJhY2tJRCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBjb3JlQ2FsbGJhY2tJRCA9IGxvYWRlci0+bG9hZEFwcGxp
Y2F0aW9uTWFuaWZlc3QoKTsKKyAgICBpZiAoIWNvcmVDYWxsYmFja0lEKSB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKHN0
ZDo6bnVsbG9wdCwgY2FsbGJhY2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC5hZGQoY29yZUNhbGxiYWNrSUQs
IGNhbGxiYWNrSUQudG9JbnRlZ2VyKCkpOworfQorCit2b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExv
YWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxsYmFja0lELCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3sK
KyAgICBhdXRvIGNhbGxiYWNrSUQgPSBDYWxsYmFja0lEOjpmcm9tSW50ZWdlcihtX2FwcGxpY2F0
aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLnRha2UoY29yZUNhbGxiYWNrSUQpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayht
YW5pZmVzdCwgY2FsbGJhY2tJRCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjI2NTAzODU2Y2YuLjA5MDkxMjUzY2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04Nyw2ICs4Nywx
MCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRDb25maWd1cmF0aW9uLmg+CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1BsYXRmb3JtVG91Y2hFdmVudElPUy5oPgog
I2VsaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTEwMzEsNiArMTAzNSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBdHRhY2htZW50RGF0YUFuZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3RmlsZW5hbWUsIENh
bGxiYWNrSUQpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisg
ICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENhbGxiYWNrSUQpOworICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogCkBAIC0xNjQ1LDYgKzE2NTQsMTAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqPiBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhh
bmRsZXJQcm94eU1hcDsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9p
ZCAoYm9vbCBncmFudGVkKT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CisK
KyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgSGFzaE1hcDx1aW50NjRfdCwg
dWludDY0X3Q+IG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXA7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZmFmNGNjYmRiZjUuLmYy
ZjE4Y2I1OWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ5MSw0ICs0OTEsOCBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBdHRhY2htZW50RGlzcGxheU9wdGlvbnMoU3Ry
aW5nIGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpBdHRhY2htZW50RGlzcGxheU9wdGlvbnMg
b3B0aW9ucywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QXR0YWNobWVu
dERhdGFBbmRDb250ZW50VHlwZShTdHJpbmcgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IG5ld0ZpbGVuYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNl
bmRpZgorCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIEdldEFwcGxpY2F0
aW9uTWFuaWZlc3QoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYzM4YWI4
N2IzYi4uNzlkOThlYjkwM2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxNy0xMi0wMSAgRGF2aWQgUXVlc2FkYSAg
PGRhdmlkX3F1ZXNhZGFAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBB
ZGQgU1BJIGZvciBmZXRjaGluZyB0aGUgbWFuaWZlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDI5NAorICAgICAgICByZGFyOi8vcHJvYmxlbS8z
NDc0Nzk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tOiBBZGRlZC4KKyAgICAgICAgICAgIEFkZGVkIHR3byBBUEkgdGVzdHMgZm9yIF9X
S0FwcGxpY2F0aW9uTWFuaWZlc3Q6CisgICAgICAgICAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRp
b25NYW5pZmVzdCdzIGNvbmZvcm1hbmNlIHRvIE5TQ29kaW5nLgorICAgICAgICAgICAgLSBUZXN0
aW5nIC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5k
bGVyOl0sIHZlcmlmeWluZyB0aGUKKyAgICAgICAgICAgICAgdmFsdWVzIG9mIHRoZSByZXN1bHRp
bmcgX1dLQXBwbGljYXRpb25NYW5pZmVzdC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbDoKKyAgICAgICAgICAgIEFkZGVkIGEgbmV3IHRlc3RSdW5uZXIgbWV0aG9k
IGdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKCksIHVzZWQgYnkgdGhlIExheW91dFRlc3RzCisg
ICAgICAgICAgICB0byByZXF1ZXN0IHRoZSBkb2N1bWVudCBsb2FkIGl0cyBhc3NvY2lhdGVkIG1h
bmlmZXN0LiBUaGUgbGF5b3V0IHRlc3RzIGZvcm1lcmx5IGNhbGxlZAorICAgICAgICAgICAgYW4g
dW5pbXBsZW1lbnRlZCBmdW5jdGlvbiBnZXRNYW5pZmVzdFRoZW4oKSwgYnV0IEkgYWRkZWQgJ0Fw
cGxpY2F0aW9uJyB0byBzb21ld2hhdAorICAgICAgICAgICAgZGlmZmVyZW50aWF0ZSB0aGlzIGZy
b20gdGhlIGFwcCBjYWNoZSBtYW5pZmVzdC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6ZGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxNy0x
Mi0wNSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAg
U3dpdGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE3CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDMwMGM3NzhmYTlmLi42MGJkZTJkMjdkMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI2MCw2ICsyNjAsNyBAQAogCQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyog
QXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2MzU0RjREMDFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRp
b25NYW5pZmVzdFBhcnNlci5jcHAgKi87IH07CiAJCTYzNTZGQjIyMUVDNEUwQkEwMDQ0QkYxOCAv
KiBWaXNpYmxlQ29udGVudFJlY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2MzU2RkIyMTFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRS
ZWN0Lm1tICovOyB9OwogCQk2MzYzNTNBNzFFOTg2NjVEMDAwOUY4QUYgLyogR2VvbG9jYXRpb25H
ZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzYzNTNBNjFFOTg2MTk0MDAwOUY4QUYgLyogR2Vv
bG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRtbCAqLzsgfTsKKwkJNjNGNjY4MjIx
Rjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEg
LyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLzsgfTsKIAkJNkJGRDI5NEMxRDVFNkMxRDAwOEVD
OTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNl
dC5jcHAgKi87IH07CiAJCTc1MUIwNUQ2MUY4RUFDNDEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNr
ZXJUZXN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzUxQjA1RDUxRjhFQUMxQTAwMjhBMDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0gKi87IH07
CiAJCTc1NENFQzgxMUY2NzIyRjIwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NENFQzgwMUY2NzIy
REMwMEQwMDM5QSAvKiBBdXRvRmlsbEF2YWlsYWJsZS5tbSAqLzsgfTsKQEAgLTE0MDMsNiArMTQw
NCw3IEBACiAJCTYzNTRGNEQwMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0
UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzU2RkIyMTFFQzRFMEJBMDA0NEJG
MTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlzaWJs
ZUNvbnRlbnRSZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzYzNTNBNjFF
OTg2MTk0MDAwOUY4QUYgLyogR2VvbG9jYXRpb25HZXRDdXJyZW50UG9zaXRpb25SZXN1bHQuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0
aW9uUmVzdWx0Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzRjY2ODIwMUY5
N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXBwbGljYXRpb25NYW5pZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzUxQjA1RDUxRjhFQUMxQTAwMjhBMDlFIC8qIERhdGFiYXNlVHJhY2tlclRlc3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFp
bGFibGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdXRvRmlsbEF2YWlsYWJsZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8qIE1l
bW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDAyLDYgKzIwMDQsNyBAQAogCQkJCTM3RTdERDY1MUVB
MDcxNUIwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUHJvdG9jb2wu
aCAqLywKIAkJCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlzUmV2YWxpZGF0ZWRV
UkxTY2hlbWVzLm1tICovLAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRl
ZFJlc2l6ZS5tbSAqLywKKwkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRp
b25NYW5pZmVzdC5tbSAqLywKIAkJCQk3NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0Zp
bGxBdmFpbGFibGUubW0gKi8sCiAJCQkJMkREMzU1MzUxQkQwODM3ODAwNURGNEE3IC8qIEF1dG9M
YXlvdXRJbnRlZ3JhdGlvbi5tbSAqLywKIAkJCQkzNzRCN0E1RTFERjM2RUVFMDBBQ0NCNkMgLyog
QnVuZGxlRWRpdGluZ0RlbGVnYXRlLm1tICovLApAQCAtMzI1Niw2ICszMjU5LDcgQEAKIAkJCQk3
QTkwOUE3RDFEODc3NDgwMDA3RTEwRjggLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREU3MUFGRTFENDlDMEJEMDA5MDQwOTQg
LyogQW5pbWF0ZWRSZXNpemUubW0gaW4gU291cmNlcyAqLywKKwkJCQk2M0Y2NjgyMjFGOTdGN0Y5
MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYz
NTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBBdHRyaWJ1dGVk
U3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0OEQxQkM1Q0I0NTAwNTk0RkVDIC8q
IEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3Qu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFu
aWZlc3QubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcxMGE3N2Fh
YTdjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitURVNUKFdlYktpdCwgQXBwbGljYXRpb25NYW5pZmVzdENvZGluZykK
K3sKKyAgICBhdXRvIGpzb25TdHJpbmcgPSBAInsgXCJuYW1lXCI6IFwiVGVzdE5hbWVcIiwgXCJz
aG9ydF9uYW1lXCI6IFwiVGVzdFNob3J0TmFtZVwiLCBcImRlc2NyaXB0aW9uXCI6IFwiVGVzdERl
c2NyaXB0aW9uXCIsIFwic2NvcGVcIjogXCJodHRwczovL3Rlc3QuY29tL2FwcFwiLCBcInN0YXJ0
X3VybFwiOiBcImh0dHBzOi8vdGVzdC5jb20vYXBwL2luZGV4Lmh0bWxcIiB9IjsKKyAgICBSZXRh
aW5QdHI8X1dLQXBwbGljYXRpb25NYW5pZmVzdD4gbWFuaWZlc3QgeyBbX1dLQXBwbGljYXRpb25N
YW5pZmVzdCBhcHBsaWNhdGlvbk1hbmlmZXN0RnJvbUpTT046anNvblN0cmluZyBtYW5pZmVzdFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vdGVzdC5jb20vbWFuaWZlc3QuanNvbiJd
IGRvY3VtZW50VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0LmNvbS8iXV0g
fTsKKyAgICAKKyAgICBtYW5pZmVzdCA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVPYmpl
Y3RXaXRoRGF0YTpbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om1h
bmlmZXN0LmdldCgpXV07CisgICAgCisgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0IGlzS2luZE9m
Q2xhc3M6W19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgY2xhc3NdXSk7CisgICAgRVhQRUNUX1NUUkVR
KCJUZXN0TmFtZSIsIG1hbmlmZXN0LmdldCgpLm5hbWUuVVRGOFN0cmluZyk7CisgICAgRVhQRUNU
X1NUUkVRKCJUZXN0U2hvcnROYW1lIiwgbWFuaWZlc3QuZ2V0KCkuc2hvcnROYW1lLlVURjhTdHJp
bmcpOworICAgIEVYUEVDVF9TVFJFUSgiVGVzdERlc2NyaXB0aW9uIiwgbWFuaWZlc3QuZ2V0KCku
YXBwbGljYXRpb25EZXNjcmlwdGlvbi5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoImh0
dHBzOi8vdGVzdC5jb20vYXBwIiwgbWFuaWZlc3QuZ2V0KCkuc2NvcGUuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJodHRwczovL3Rlc3QuY29tL2FwcC9pbmRl
eC5odG1sIiwgbWFuaWZlc3QuZ2V0KCkuc3RhcnRVUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmlu
Zyk7Cit9CisKK1RFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0QmFzaWMpCit7CisgICAg
c3RhdGljIGJvb2wgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIiJdOworICAgIFt3ZWJWaWV3Lmdl
dCgpIF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXBw
bGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3QpIHsKKyAgICAgICAgRVhQRUNUX05VTEwobWFuaWZl
c3QpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUp
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1cImludmFsaWR1cmw6Ly9wYXRo
XCI+Il07CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBF
WFBFQ1RfTlVMTChtYW5pZmVzdCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgTlNEaWN0aW9uYXJ5
ICptYW5pZmVzdE9iamVjdCA9IEB7IEAibmFtZSI6IEAiVGVzdCIgfTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8
bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlmZXN0K2pz
b247Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0
YVdpdGhKU09OT2JqZWN0Om1hbmlmZXN0T2JqZWN0IG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2
NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXV1dOworICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNh
dGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXBwbGljYXRpb25NYW5pZmVz
dCAqbWFuaWZlc3QpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0Lm5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAiVGVzdCJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBtYW5pZmVzdE9iamVj
dCA9IEB7CisgICAgICAgIEAibmFtZSI6IEAiQSBXZWIgQXBwbGljYXRpb24iLAorICAgICAgICBA
InNob3J0X25hbWUiOiBAIldlYkFwcCIsCisgICAgICAgIEAiZGVzY3JpcHRpb24iOiBAIkhlbGxv
LiIsCisgICAgICAgIEAic3RhcnRfdXJsIjogQCJodHRwOi8vZXhhbXBsZS5jb20vYXBwL3N0YXJ0
IiwKKyAgICAgICAgQCJzY29wZSI6IEAiaHR0cDovL2V4YW1wbGUuY29tL2FwcCIsCisgICAgfTsK
KyAgICBOU1N0cmluZyAqaHRtbFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
PGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTg7YmFzZTY0LCVAXCI+IiwgW1tOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVj
dDptYW5pZmVzdE9iamVjdCBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRFbmNvZGVkU3RyaW5n
V2l0aE9wdGlvbnM6MF1dOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS9hcHAvaW5k
ZXgiXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwor
ICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVy
Ol4oX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3QpIHsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW21hbmlmZXN0Lm5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQSBXZWIgQXBwbGljYXRpb24iXSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdC5zaG9ydE5hbWUgaXNFcXVhbFRvU3RyaW5n
OkAiV2ViQXBwIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3QuYXBwbGljYXRpb25E
ZXNjcmlwdGlvbiBpc0VxdWFsVG9TdHJpbmc6QCJIZWxsby4iXSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKFttYW5pZmVzdC5zdGFydFVSTCBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL2V4YW1wbGUuY29tL2FwcC9zdGFydCJdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFttYW5p
ZmVzdC5zY29wZSBpc0VxdWFsOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUu
Y29tL2FwcCJdXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1
bigmZG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8v
IFdLX0FQSV9FTkFCTEVEICYmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCmluZGV4IDMzMmZlMjYxYzZlLi5hOGJjN2NiZjIzMCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zMDYsNCArMzA2LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5u
ZXIgewogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKG9iamVjdCBjYWxsYmFjayk7CisKKyAgICB2b2lkIGdl
dEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKG9iamVjdCBjYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAppbmRleCBjOTMzOWYwMWYzMC4uNTZiMGRjZGRiNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBA
IC0yOTgsNiArMjk4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdl
VG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpIHsKKyAgICAgICAgbV90ZXN0
UnVubmVyLT5kaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yTWVzc2FnZU5hbWUo
QWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkVycm9yIikpOwogICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJvck1lc3NhZ2VCb2R5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVbmtub3duIikpOwogICAgIFdLQnVuZGxlUGFnZVBvc3RN
ZXNzYWdlKHBhZ2UsIGVycm9yTWVzc2FnZU5hbWUuZ2V0KCksIGVycm9yTWVzc2FnZUJvZHkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKaW5kZXggY2I1NjcwYmU5MWQuLmFhOThkMGNjNWRmIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAg
LTY1Miw2ICs2NTIsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2Fs
bGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFSZW1vdmFs
Q2FsbGJhY2tJRCwKICAgICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lE
LAorICAgIEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3Jp
cHRDYWxsYmFja0lEID0gMTAwCiB9OwogCkBAIC0xODc0LDQgKzE4NzUsMTcgQEAgdWludDY0X3Qg
VGVzdFJ1bm5lcjo6ZG9tQ2FjaGVTaXplKEpTU3RyaW5nUmVmIG9yaWdpbikKICAgICByZXR1cm4g
V0tVSW50NjRHZXRWYWx1ZShzdGF0aWNfY2FzdDxXS1VJbnQ2NFJlZj4ocmV0dXJuRGF0YSkpOwog
fQogCit2b2lkIFRlc3RSdW5uZXI6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKEpTVmFsdWVS
ZWYgY2FsbGJhY2spCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soR2V0QXBwbGljYXRp
b25NYW5pZmVzdENhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKyAgICAKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkdldEFwcGxpY2F0aW9uTWFuaWZlc3QiKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hy
b25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmRp
ZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QoKQoreworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2so
R2V0QXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKaW5kZXggZDM2OTEwZDAzMWUuLmQ2NDQ5NDMxN2NhIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDA1LDYgKzQw
NSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpT
VmFsdWVSZWYpOwogICAgIHZvaWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0Nh
bGxiYWNrKCk7CisgICAgCisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbihKU1Zh
bHVlUmVmKTsKKyAgICB2b2lkIGRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKIAogcHJpdmF0
ZToKICAgICBUZXN0UnVubmVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCmluZGV4IDJjYTdlNTIzY2MyLi5hYjM0ZTQ0NjNhYiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEyNDUsNiArMTI0NSwxOSBAQCBXS1JldGFp
blB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQgogICAgICAgICBXS1JldGFpblB0cjxXS1R5cGVSZWY+IHJlc3VsdChB
ZG9wdFdLLCBXS1VJbnQ2NENyZWF0ZShkb21DYWNoZVNpemUpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpIHsKKyNpZmRlZiBfX0JMT0NL
U19fCisgICAgICAgIFdLUGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYihUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBeeworICAgICAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiRGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCIpKTsKKyAgICAgICAg
ICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7Cisg
ICAgICAgIH0pOworI2Vsc2UKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRGlkR2V0QXBw
bGljYXRpb25NYW5pZmVzdCIpKTsKKyAgICAgICAgICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328619</attachid>
            <date>2017-12-06 13:53:57 -0800</date>
            <delta_ts>2017-12-06 14:26:37 -0800</delta_ts>
            <desc>Patch for landing - v5</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>72767</size>
            <attacher name="David Quesada">david_quesada</attacher>
            
              <data encoding="base64">Y29tbWl0IDllNDc4ZmE3NThiMmJlMThkNGYwMDBkNjVlOWE2ZjNhNTA5NzliYzEKQXV0aG9yOiBE
YXZpZCBRdWVzYWRhIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KRGF0ZTogICBGcmkgTm92IDE3
IDEwOjA0OjU5IDIwMTcgLTA4MDAKCiAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3Ig
ZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CiAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjk0CiAgICByZGFyOi8vcHJvYmxlbS8zNDc0Nzk2OAogICAgCiAgICBSZXZp
ZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAg
IFRlc3Q6IGFwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLmh0bWwKICAgIAog
ICAgKiBNb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oOgog
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CiAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25NYW5pZmVzdDo6ZGVjb2RlKToKICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwOgogICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5n
KToKICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpsb2dNYW5pZmVzdFBy
b3BlcnR5SW52YWxpZFVSTCk6CiAgICAgICAgRHJpdmUtYnkgd29yZGluZyBjaGFuZ2VzLiBTaW5j
ZSB0aGUgd2FybmluZyBpcyBwcmVmaXhlZCB3aXRoICJwYXJzaW5nCiAgICAgICAgYXBwbGljYXRp
b24gbWFuaWZlc3Q6IiwgcmVtb3ZlIGEgcmVkdW5kYW50IHVzZSBvZiAiYXBwbGljYXRpb24gbWFu
aWZlc3QiLgogICAgCiAgICBTb3VyY2UvV2ViS2l0OgogICAgCiAgICBBZGQgYSBuZXcgbWV0aG9k
IC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVy
Ol0gdG8gcmVxdWVzdAogICAgdGhlIG1hbmlmZXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVu
dCBwYWdlLgogICAgCiAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CiAgICAqIFNoYXJlZC9D
b2NvYS9BUElPYmplY3QubW06CiAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CiAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5o
LgogICAgICAgIEFkZCBhIG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlm
ZXN0cy4KICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CiAgICAoV0tQYWdlR2V0QXBw
bGljYXRpb25NYW5pZmVzdF9iKToKICAgICAgICBBZGQgYSBDIHZlcnNpb24gb2YgdGhpcyBTUEkg
Zm9yIFdlYktpdFRlc3RSdW5uZXIuCiAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRl
Lmg6CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgogICAgKC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgogICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0Lmgu
CiAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRk
ZWQuCiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGVuY29kZVdpdGhDb2RlcjpdKToKICAgICgrW19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0VVJM
OmRvY3VtZW50VVJMOl0pOgogICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBfYXBpT2JqZWN0
XSk6CiAgICAobnVsbGFibGVOU1N0cmluZyk6CiAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IG5hbWVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2hvcnROYW1lXSk6CiAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uRGVzY3JpcHRpb25dKToKICAgICgt
W19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qgc2NvcGVdKToKICAgICgtW19XS0FwcGxpY2F0aW9uTWFu
aWZlc3Qgc3RhcnRVUkxdKToKICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlv
bk1hbmlmZXN0SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KICAgIChBUEk6OndyYXBw
ZXIpOgogICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6YXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKToKICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CiAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgogICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CiAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldEFw
cGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGlu
Z0FwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgogICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKICAgIAogICAg
VG9vbHM6CiAgICAKICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CiAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
bGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCiAgICAgICAgQWRkZWQgdHdvIEFQSSB0ZXN0cyBm
b3IgX1dLQXBwbGljYXRpb25NYW5pZmVzdDoKICAgICAgICAtIFRlc3RpbmcgX1dLQXBwbGljYXRp
b25NYW5pZmVzdCdzIGNvbmZvcm1hbmNlIHRvIE5TQ29kaW5nLgogICAgICAgIC0gVGVzdGluZyAt
W1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpd
LCB2ZXJpZnlpbmcgdGhlCiAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlc3VsdGluZyBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LgogICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgogICAgCiAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CiAg
ICAgICAgQWRkZWQgYSBuZXcgdGVzdFJ1bm5lciBtZXRob2QgZ2V0QXBwbGljYXRpb25NYW5pZmVz
dFRoZW4oKSwgdXNlZCBieSB0aGUgTGF5b3V0VGVzdHMKICAgICAgICB0byByZXF1ZXN0IHRoZSBk
b2N1bWVudCBsb2FkIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0LiBUaGUgbGF5b3V0IHRlc3RzIGZv
cm1lcmx5IGNhbGxlZAogICAgICAgIGFuIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZl
c3RUaGVuKCksIGJ1dCBJIGFkZGVkICdBcHBsaWNhdGlvbicgdG8gc29tZXdoYXQKICAgICAgICBk
aWZmZXJlbnRpYXRlIHRoaXMgZnJvbSB0aGUgYXBwIGNhY2hlIG1hbmlmZXN0LgogICAgCiAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgogICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKICAgIChXVFI6OlRl
c3RSdW5uZXI6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKToKICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgogICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CiAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CiAgICAKICAgIExheW91dFRlc3RzOgogICAg
CiAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAgU2tpcCB0aGUgYXBwIG1hbmlmZXN0LXJl
bGF0ZWQgbGF5b3V0IHRlc3RzIGZvciBub3cgd2hpbGUgdGhlIGZlYXR1cmUgaXMgc3RpbGwgZGlz
YWJsZWQuCiAgICAgICAgQWxzbyBtb3ZlZCB0aGUgZXhwZWN0YXRpb25zIGRpc2FibGluZyB0aGUg
bWFuaWZlc3Qtc3JjIGxheW91dCB0ZXN0cyAod2hpY2ggbm93IHBhc3MKICAgICAgICB3aGVuIHRo
ZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRvIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgog
ICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHQ6
IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1s
OiBBZGRlZC4KICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0
bWw6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIHZlcmlmeSBvbmx5IHRoZSBm
aXJzdCBtYW5pZmVzdCBsaW5rIGlzIGxvYWRlZCB3aGVuIHRoZXJlCiAgICAgICAgYXJlIG11bHRp
cGxlIG9uIHRoZSBwYWdlLgogICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L3Jlc291cmNlcy9kZXZl
bG9wZXItd2FybmluZ3MubWFuaWZlc3Q6IEFkZGVkLgogICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHdhcm5pbmdzIGdlbmVyYXRlZCB3aGlsZSBwYXJzaW5nIHRoZSBtYW5p
ZmVzdCBhcmUKICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWw6
CiAgICAgICAgUmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBs
aWNhdGlvbk1hbmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CiAgICAgICAg
VXBkYXRlZCB0aGUgZXhwZWN0ZWQgY29uc29sZSBtZXNzYWdlIHRvIHJlZmxlY3QgdGhlIGN1cnJl
bnQgd29yZGluZyBmb3IgQ1NQIHZpb2xhdGlvbnMuCiAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWw6CiAgICAgICAg
UmVwbGFjZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0VGhlbigpLgogICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb246CiAgICAgICAgUmVtb3ZlZCBhIHRyYWls
aW5nIG5ld2xpbmUgdGhhdCB3YXMgY2F1c2luZyBKU09OIHBhcnNpbmcgdG8gZmFpbC4KCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZmRhYmYwODRhYjAuLmI3OWE0ZDk1YzU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTct
MTItMDEgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICAgICBT
a2lwIHRoZSBhcHAgbWFuaWZlc3QtcmVsYXRlZCBsYXlvdXQgdGVzdHMgZm9yIG5vdyB3aGlsZSB0
aGUgZmVhdHVyZSBpcyBzdGlsbCBkaXNhYmxlZC4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhl
IGV4cGVjdGF0aW9ucyBkaXNhYmxpbmcgdGhlIG1hbmlmZXN0LXNyYyBsYXlvdXQgdGVzdHMgKHdo
aWNoIG5vdyBwYXNzCisgICAgICAgICAgICB3aGVuIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQpIHRv
IHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBmaWxlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFu
aWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
YXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbDogQWRkZWQuCisgICAg
ICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbDog
QWRkZWQuCisgICAgICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgb25seSB0aGUg
Zmlyc3QgbWFuaWZlc3QgbGluayBpcyBsb2FkZWQgd2hlbiB0aGVyZQorICAgICAgICAgICAgYXJl
IG11bHRpcGxlIG9uIHRoZSBwYWdlLgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvcmVz
b3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogQWRkZWQuCisgICAgICAgICAgICBB
ZGQgYSBsYXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhhdCB3YXJuaW5ncyBnZW5lcmF0ZWQgd2hpbGUg
cGFyc2luZyB0aGUgbWFuaWZlc3QgYXJlCisgICAgICAgICAgICBsb2dnZWQgdG8gdGhlIGNvbnNv
bGUuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbDoKKyAgICAgICAgICAgIFJlcGxhY2VkIGNhbGxzIHRv
IGdldE1hbmlmZXN0VGhlbigpIHdpdGggZ2V0QXBwbGljYXRpb25NYW5pZmVzdFRoZW4oKS4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVz
dC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICAgICBVcGRhdGVkIHRoZSBleHBl
Y3RlZCBjb25zb2xlIG1lc3NhZ2UgdG8gcmVmbGVjdCB0aGUgY3VycmVudCB3b3JkaW5nIGZvciBD
U1AgdmlvbGF0aW9ucy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sOgorICAgICAgICAgICAgUmVwbGFj
ZWQgY2FsbHMgdG8gZ2V0TWFuaWZlc3RUaGVuKCkgd2l0aCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
VGhlbigpLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbjoKKyAgICAgICAgICAgIFJlbW92ZWQgYSB0
cmFpbGluZyBuZXdsaW5lIHRoYXQgd2FzIGNhdXNpbmcgSlNPTiBwYXJzaW5nIHRvIGZhaWwuCisK
IDIwMTctMTItMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFByZWZsaWdodCBzaG91bGQgYnlwYXNzIHNlcnZpY2Ugd29ya2VyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA5YmY4YzgxNDk5Ni4uNzBlNzc5NWY0MzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTA5
NCw4ICsxMDk0LDYgQEAgd2Via2l0Lm9yZy9iLzExMTg2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9ldmFsLWJsb2NrZWQtYW5kLXMKIHdlYmtpdC5vcmcvYi8xNTMx
NDggaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvZXZhbC1hbGxvd2Vk
LWluLXJlcG9ydC1vbmx5LW1vZGUtYW5kLXNlbmRzLXJlcG9ydC5waHAKIHdlYmtpdC5vcmcvYi8x
NTMxNTAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL2NoaWxk
LXNyYy9mcmFtZS1maXJlcy1sb2FkLWV2ZW50LXdoZW4tYmxvY2tlZC5odG1sCiB3ZWJraXQub3Jn
L2IvMTUzMTUwIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5LzEuMS9j
aGlsZC1zcmMvZnJhbWUtZmlyZXMtbG9hZC1ldmVudC13aGVuLXJlZGlyZWN0LWJsb2NrZWQuaHRt
bAotd2Via2l0Lm9yZy9iLzE1MzE1MiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sICMgTmVlZHMgdGVzdFJ1bm5lci5nZXRN
YW5pZmVzdFRoZW4oKQotd2Via2l0Lm9yZy9iLzE1MzE1MiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sICMgTmVlZHMgdGVz
dFJ1bm5lci5nZXRNYW5pZmVzdFRoZW4oKQogd2Via2l0Lm9yZy9iLzE1MzE1NSBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS8xLjEvc2NyaXB0aGFzaC1iYXNpYy1ibG9j
a2VkLWVycm9yLWV2ZW50Lmh0bWwKIHdlYmtpdC5vcmcvYi8xNTMxNTUgaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFzaC1iYXNpYy1ibG9ja2VkLWVy
cm9yLWV2ZW50Lmh0bWwKIHdlYmtpdC5vcmcvYi8xNTMxNTUgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvMS4xL3N0eWxlaGFzaC1zdmctc3R5bGUtYmFzaWMtYmxvY2tl
ZC1lcnJvci1ldmVudC5odG1sCkBAIC0xNjM0LDMgKzE2MzIsOSBAQCB3ZWJraXQub3JnL2IvMTc5
Mjg3IGh0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMvQW5pbWF0aW9uVGltZWxpbmUv
ZG9jdW1lbgogd2Via2l0Lm9yZy9iLzE3OTI4NyBodHRwL3dwdC93ZWItYW5pbWF0aW9ucy90aW1p
bmctbW9kZWwvYW5pbWF0aW9ucy9zZXQtdGhlLWFuaW1hdGlvbi1zdGFydC10aW1lLmh0bWwgWyBQ
YXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMTc3NDQwIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9vcmlnaW4vcmVsYXhpbmctdGhlLXNhbWUtb3JpZ2lu
LXJlc3RyaWN0aW9uL2RvY3VtZW50X2RvbWFpbl9zZXR0ZXJfbnVsbC50ZW50YXRpdmUuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCisKKyMgQXBwbGljYXRpb24gTWFuaWZlc3QgdGVzdHMKK3dlYmtpdC5v
cmcvYi8xNTMxNTIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFu
aWZlc3Qtc3JjLWFsbG93ZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzE1MzE1MiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tl
ZC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMTU4MjA1IGFwcGxpY2F0aW9ubWFuaWZlc3Qv
IFsgU2tpcCBdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3Qv
ZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvZGV2ZWxvcGVyLXdhcm5pbmdzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjMyMGY0NTJlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFBhcnNpbmcgYXBwbGljYXRp
b24gbWFuaWZlc3QgZGV2ZWxvcGVyLXdhcm5pbmdzLm1hbmlmZXN0OiBUaGUgdmFsdWUgb2YgInN0
YXJ0X3VybCIgaXMgbm90IGEgdmFsaWQgVVJMLgorQ09OU09MRSBNRVNTQUdFOiBQYXJzaW5nIGFw
cGxpY2F0aW9uIG1hbmlmZXN0IGRldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdDogVGhlIHZhbHVl
IG9mICJuYW1lIiBpcyBub3QgYSBzdHJpbmcuCitBTEVSVDogUGFzcworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy5odG1sIGIv
TGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2U1YmM3N2JmNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13
YXJuaW5ncy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9
InJlc291cmNlcy9kZXZlbG9wZXItd2FybmluZ3MubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZ2V0QXBwbGljYXRpb25N
YW5pZmVzdFRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJQYXNzIik7CisgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0pOworfQorPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3Mt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45MGM3
ODk2MTE2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZl
c3QvbXVsdGlwbGUtbGlua3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorbXVsdGlwbGUt
bGlua3MuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKK3VybHNjaGVtZTovLzEgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgdXJsc2NoZW1lOi8vMSwgbWFpbiBkb2N1bWVudCBVUkwg
bXVsdGlwbGUtbGlua3MuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChu
dWxsKQordXJsc2NoZW1lOi8vMSAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBk
b21haW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtMTAwMiwgZmFpbGluZyBVUkwgInVybHNjaGVt
ZTovLzEiPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211
bHRpcGxlLWxpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRp
cGxlLWxpbmtzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAw
N2JiOGY4MDYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5p
ZmVzdC9tdWx0aXBsZS1saW5rcy5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxsaW5rIHJlbD0ibWFu
aWZlc3QiIGhyZWY9InVybHNjaGVtZTovLzEiIG1lZGlhPSJwcmludCI+Cis8bGluayByZWw9Im1h
bmlmZXN0IiBocmVmPSJ1cmxzY2hlbWU6Ly8yIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9KTsKK30KKzwvc2NyaXB0
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJuaW5ncy5tYW5pZmVzdCBi
L0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvcmVzb3VyY2VzL2RldmVsb3Blci13YXJu
aW5ncy5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmEw
YmIwODdhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlm
ZXN0L3Jlc291cmNlcy9kZXZlbG9wZXItd2FybmluZ3MubWFuaWZlc3QKQEAgLTAsMCArMSw0IEBA
Cit7CisgICAgIm5hbWUiOiAwLAorICAgICJzdGFydF91cmwiOiAiaHR0cDo/IgorfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1hbGxvd2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9t
YW5pZmVzdC1zcmMtYWxsb3dlZC5odG1sCmluZGV4IGRkYmQ0N2QyN2UyLi5lZjVlMTBhZWRiOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWFsbG93ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYWxsb3dl
ZC5odG1sCkBAIC00LDcgKzQsNyBAQAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZ2V0TWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkg
eworICAgICAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9uTWFuaWZlc3RUaGVuKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgYWxlcnQoIlBhc3MiKTsKICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2Vk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVjdGVkLnR4dAppbmRleCA3MDZi
ODg1YzY1Ni4uMmY2NTFjNmQ4ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSwz
IEBACi1DT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCBtYW5pZmVzdCBmcm9tICdodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0
LnRlc3QvbWFuaWZlc3QuanNvbicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENv
bnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIm1hbmlmZXN0LXNyYyAnbm9uZSciLgot
CitDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCBodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNv
biBiZWNhdXNlIGl0IGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWFuaWZlc3Qtc3JjIGRpcmVjdGl2
ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuCiBBTEVSVDogUGFzcwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbAppbmRl
eCBhN2RmNzE0NmJmNC4uY2Q0ZDFmN2I4OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2Vk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbApAQCAtNCw3ICs0LDcgQEAKICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB0ZXN0UnVubmVy
LmdldE1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5nZXRBcHBs
aWNhdGlvbk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFsZXJ0KCJQYXNz
Iik7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24gYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50ZXN0L21hbmlmZXN0
Lmpzb24KaW5kZXggZGE2ZGNmOGI1ODMuLjdmZTg4NGQ3YTA2IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC50
ZXN0L21hbmlmZXN0Lmpzb24KKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3QudGVzdC9tYW5pZmVzdC5qc29uCkBAIC0xLDQg
KzEsNCBAQAogewogICAgICJuYW1lIjogIlN1cGVyIFJhY2VyIDIwMDAiLAogICAgICJzdGFydF91
cmwiOiAiL3N0YXJ0Lmh0bWwiCi19Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDE4M2YzNzJjMzJjLi5jYTdhNThmNDZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE3LTEyLTAxICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFkZCBTUEkgZm9yIGZldGNoaW5nIHRo
ZSBtYW5pZmVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMjk0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzM0NzQ3OTY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgVGVzdDogYXBwbGljYXRpb25tYW5p
ZmVzdC9kZXZlbG9wZXItd2FybmluZ3MuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9hcHBsaWNh
dGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbk1hbmlmZXN0OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGljYXRpb25t
YW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlOb3RBU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlm
ZXN0UHJvcGVydHlJbnZhbGlkVVJMKToKKyAgICAgICAgICAgIERyaXZlLWJ5IHdvcmRpbmcgY2hh
bmdlcy4gU2luY2UgdGhlIHdhcm5pbmcgaXMgcHJlZml4ZWQgd2l0aCAicGFyc2luZworICAgICAg
ICAgICAgYXBwbGljYXRpb24gbWFuaWZlc3Q6IiwgcmVtb3ZlIGEgcmVkdW5kYW50IHVzZSBvZiAi
YXBwbGljYXRpb24gbWFuaWZlc3QiLgorCiAyMDE3LTEyLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBQcmVmbGlnaHQgc2hvdWxkIGJ5cGFzcyBzZXJ2aWNl
IHdvcmtlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1h
bmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKaW5kZXggZWY5NjI2OTA5Njcu
LmM3MGU3ZTYwYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0
aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKICNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zNyw4ICszOCwzNiBAQCBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdCB7CiAgICAgU3Ry
aW5nIGRlc2NyaXB0aW9uOwogICAgIFVSTCBzY29wZTsKICAgICBVUkwgc3RhcnRVUkw7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRp
b25NYW5pZmVzdD4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+Cit2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbmFtZSA8PCBzaG9ydE5hbWUgPDwgZGVzY3JpcHRpb24g
PDwgc2NvcGUgPDwgc3RhcnRVUkw7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QgcmVzdWx0Owor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubmFtZSkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvcnROYW1lKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5kZXNjcmlwdGlvbikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2NvcGUpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnN0YXJ0VVJMKSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5pZmVzdC9B
cHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA0Njdl
NTY4MzE0YS4uMDk3MGE1MjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGljYXRpb25tYW5pZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5p
ZmVzdFBhcnNlci5jcHAKQEAgLTc5LDEyICs3OSwxMiBAQCBBcHBsaWNhdGlvbk1hbmlmZXN0IEFw
cGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlTWFuaWZlc3QoY29uc3QgU3RyaW5nJiB0ZXh0
LAogCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVydHlO
b3RBU3RyaW5nKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIGxvZ0RldmVsb3Bl
cldhcm5pbmcoIlRoZSBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgYXBwbGljYXRpb24gbWFuaWZl
c3QgcHJvcGVydHkgaXMgbm90IGEgc3RyaW5nLiIpOworICAgIGxvZ0RldmVsb3Blcldhcm5pbmco
IlRoZSB2YWx1ZSBvZiBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgaXMgbm90IGEgc3RyaW5nLiIp
OwogfQogCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ01hbmlmZXN0UHJvcGVy
dHlJbnZhbGlkVVJMKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewotICAgIGxvZ0RldmVs
b3Blcldhcm5pbmcoIlRoZSBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgYXBwbGljYXRpb24gbWFu
aWZlc3QgcHJvcGVydHkgaXMgbm90IGEgdmFsaWQgVVJMLiIpOworICAgIGxvZ0RldmVsb3Blcldh
cm5pbmcoIlRoZSB2YWx1ZSBvZiBcIiIgKyBwcm9wZXJ0eU5hbWUgKyAiXCIgaXMgbm90IGEgdmFs
aWQgVVJMLiIpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXI6OmxvZ0RldmVs
b3Blcldhcm5pbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhYWJiNzk1YTc1
YS4uNTM3NDNkNDE4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTItMDEgIERh
dmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFw
cCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICBBZGQgYSBuZXcgbWV0aG9kIC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlv
bk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl0gdG8gcmVxdWVzdAorICAgICAgICB0aGUg
bWFuaWZlc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHBhZ2UuCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsaWNhdGlvbm1hbmlmZXN0L0FwcGxpY2F0aW9uTWFuaWZlc3QuaC4KKyAg
ICAgICAgICAgIEFkZCBhIG5ldyBBUEkgb2JqZWN0IHR5cGUgZm9yIGFwcGxpY2F0aW9uIG1hbmlm
ZXN0cy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZUdldEFwcGxpY2F0aW9uTWFuaWZlc3RfYik6CisgICAgICAgICAgICBBZGQgYSBDIHZlcnNp
b24gb2YgdGhpcyBTUEkgZm9yIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0
V2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBw
bGljYXRpb25NYW5pZmVzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxpY2F0aW9ubWFuaWZlc3QvQXBwbGljYXRpb25NYW5pZmVzdC5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCisgICAgICAg
ICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
X1dLQXBwbGljYXRpb25NYW5pZmVzdCBlbmNvZGVXaXRoQ29kZXI6XSk6CisgICAgICAgICgrW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOm1hbmlmZXN0
VVJMOmRvY3VtZW50VVJMOl0pOgorICAgICAgICAoLVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IF9h
cGlPYmplY3RdKToKKyAgICAgICAgKG51bGxhYmxlTlNTdHJpbmcpOgorICAgICAgICAoLVtfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0IG5hbWVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5p
ZmVzdCBzaG9ydE5hbWVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhcHBs
aWNhdGlvbkRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3Qg
c2NvcGVdKToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCBzdGFydFVSTF0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGljYXRpb25tYW5p
ZmVzdC9BcHBsaWNhdGlvbk1hbmlmZXN0LmguCisgICAgICAgIChBUEk6OndyYXBwZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRp
bmdBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxp
Y2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIw
MTctMTItMDYgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogW2lP
U10gUG9zdCBhY2Nlc3NpYmlsaXR5IG5vdGlmaWNhdGlvbiB3aGVuIGEgd2ViIHByb2Nlc3MgY2hh
bmdlcyBpdHMgc3VzcGVuZGVkIHN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
aW5kZXggZjA3NDE0Yzg3YTkuLjc1NTcyYTZkYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCkBAIC05Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8v
IFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwKKyNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgICAgIEFwcGxpY2F0aW9uTWFuaWZlc3Qs
CisjZW5kaWYKICAgICAgICAgQXR0YWNobWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24s
CiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbQppbmRleCBkZmJhOWZkOTRmMS4uYzc1YjIzMTQ2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTgxLDYgKzgxLDEwIEBACiAjaW1wb3J0ICJfV0tV
c2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlSW50
ZXJuYWwuaCIKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbXBvcnQgIl9X
S0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgorI2VuZGlmCisKIHN0YXRpYyBjb25zdCBz
aXplX3QgbWluaW11bU9iamVjdEFsaWdubWVudCA9IDg7CiBzdGF0aWNfYXNzZXJ0KG1pbmltdW1P
YmplY3RBbGlnbm1lbnQgPj0gYWxpZ25vZih2b2lkKiksICJPYmplY3RzIHNob3VsZCBhbHdheXMg
YmUgYXQgbGVhc3QgcG9pbnRlci1hbGlnbmVkLiIpOwogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhp
bXVtRXh0cmFTcGFjZUZvckFsaWdubWVudCA9IG1pbmltdW1PYmplY3RBbGlnbm1lbnQgLSBhbGln
bm9mKHZvaWQqKTsKQEAgLTExOSw2ICsxMjMsMTIgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qo
c2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAvLyBBUEk6Ok9iamVjdCwgc28gdGhleSBhcmUg
YWxsb2NhdGVkIHVzaW5nICthbGxvYy4KIAogICAgIHN3aXRjaCAodHlwZSkgeworI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBjYXNlIFR5cGU6OkFwcGxpY2F0aW9uTWFuaWZl
c3Q6CisgICAgICAgIHdyYXBwZXIgPSBbX1dLQXBwbGljYXRpb25NYW5pZmVzdCBhbGxvY107Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICBjYXNlIFR5cGU6OkFycmF5OgogICAgICAgICB3
cmFwcGVyID0gW1dLTlNBcnJheSBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBcHBsaWNhdGlvbk1hbmlmZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVkMzMxNDhiZjY0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUFwcGxpY2F0aW9uTWFuaWZl
c3QuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aD4KKworbmFtZXNwYWNlIEFQSSB7CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CitjbGFzcyBBcHBsaWNhdGlvbk1hbmlmZXN0IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxBcHBsaWNhdGlvbk1hbmlmZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdCYgYXBwbGljYXRpb25NYW5pZmVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEFwcGxpY2F0aW9uTWFuaWZlc3QoYXBwbGljYXRpb25NYW5pZmVzdCkpOworICAg
IH0KKworICAgIGV4cGxpY2l0IEFwcGxpY2F0aW9uTWFuaWZlc3QoY29uc3QgV2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdCYgYXBwbGljYXRpb25NYW5pZmVzdCkKKyAgICAgICAgOiBtX2FwcGxp
Y2F0aW9uTWFuaWZlc3QoYXBwbGljYXRpb25NYW5pZmVzdCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgV2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdCYgYXBwbGljYXRpb25NYW5pZmVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25NYW5pZmVzdDsgfQorCitwcml2YXRlOgorICAg
IFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3QgbV9hcHBsaWNhdGlvbk1hbmlmZXN0OworfTsK
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBBUEkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKaW5kZXggZjIyNDRkNzQzNzQuLjMyZTRmNGFmZGEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI3NjAsMyArMjc2MCwxNyBAQCBQ
cm9jZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2UpCiB7CiAg
ICAgcmV0dXJuIHRvSW1wbChwYWdlKS0+cHJvY2Vzc0lkZW50aWZpZXIoKTsKIH0KKworI2lmZGVm
IF9fQkxPQ0tTX18KK3ZvaWQgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFdLUGFnZVJl
ZiBwYWdlLCBXS1BhZ2VHZXRBcHBsaWNhdGlvbk1hbmlmZXN0QmxvY2sgYmxvY2spCit7CisjaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIHRvSW1wbChwYWdlKS0+Z2V0QXBwbGlj
YXRpb25NYW5pZmVzdChbYmxvY2tdKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGlj
YXRpb25NYW5pZmVzdD4gJm1hbmlmZXN0LCBDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgICAg
IGJsb2NrKCk7CisgICAgfSk7CisjZWxzZSAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1Qp
CisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIGJsb2NrKCk7CisjZW5kaWYgLy8gbm90IEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCmluZGV4IDBkZjgzNjQ4OTRlLi5iYjI2ZGU4
YWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUu
aApAQCAtMTc4LDYgKzE3OCwxMSBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRJZ25vcmVzVmll
d3BvcnRTY2FsZUxpbWl0cyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCBpZ25vcmVzVgogCiBXS19FWFBP
UlQgV0tQcm9jZXNzSUQgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2Up
OwogCisjaWZkZWYgX19CTE9DS1NfXwordHlwZWRlZiB2b2lkICheV0tQYWdlR2V0QXBwbGljYXRp
b25NYW5pZmVzdEJsb2NrKSh2b2lkKTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUdldEFwcGxpY2F0
aW9uTWFuaWZlc3RfYihXS1BhZ2VSZWYgcGFnZSwgV0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVz
dEJsb2NrIGJsb2NrKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
NWU0MTZjZDhiZDguLmEyOWRiY2IxZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTExNyw2ICsxMTcsMTAgQEAKICNpbXBvcnQgPHd0
Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyNpbXBvcnQgIl9XS0FwcGxpY2F0
aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJ
T04pCiAjaW1wb3J0ICJXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCIKICNlbmRpZgpAQCAt
NDM0NCw2ICs0MzQ4LDI1IEBAIC0gKHZvaWQpX2dldENvbnRlbnRzQXNTdHJpbmdXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICosIE5TRXJyb3IKICAgICB9KTsKIH0KIAor
LSAodm9pZClfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBfcGFnZS0+Z2V0QXBwbGljYXRpb25N
YW5pZmVzdChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXShjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBt
YW5pZmVzdCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIFVO
VVNFRChlcnJvcik7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAg
ICAgaWYgKG1hbmlmZXN0KSB7CisgICAgICAgICAgICAgICAgYXV0byBhcGlNYW5pZmVzdCA9IEFQ
STo6QXBwbGljYXRpb25NYW5pZmVzdDo6Y3JlYXRlKCptYW5pZmVzdCk7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihhcGlNYW5pZmVzdCkpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAg
fQorICAgIH0pOworI2Vsc2UKKyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7CisjZW5kaWYKK30KKwogLSAoX1dLUGFnaW5hdGlvbk1vZGUp
X3BhZ2luYXRpb25Nb2RlCiB7CiAgICAgc3dpdGNoIChfcGFnZS0+cGFnaW5hdGlvbk1vZGUoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggOTY2ZmI5YmExOWIuLjU3ZDgyMmY3OTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTk2
LDYgKzk2LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsK
ICNlbmRpZgogCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRleHRIYW5kbGU7CitAY2xhc3MgX1dLQXBw
bGljYXRpb25NYW5pZmVzdDsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBfV0tIaXRU
ZXN0UmVzdWx0OwogQGNsYXNzIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7CkBAIC0zMDcsNiArMzA4
LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIC0gKHZv
aWQpX2dldFdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Rh
dGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX2dldENvbnRlbnRz
QXNTdHJpbmdXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICosIE5TRXJy
b3IgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBp
b3MoMTEuMCkpOwogCistICh2b2lkKV9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQYWdpbmF0aW9uTW9kZTop
IF9XS1BhZ2luYXRpb25Nb2RlIF9wYWdpbmF0aW9uTW9kZTsKIC8vIFdoZXRoZXIgdGhlIGNvbHVt
bi1icmVhay17YmVmb3JlLGFmdGVyfSBwcm9wZXJ0aWVzIGFyZSByZXNwZWN0ZWQgaW5zdGVhZCBv
ZiB0aGUKIC8vIHBhZ2UtYnJlYWste2JlZm9yZSxhZnRlcn0gcHJvcGVydGllcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25N
YW5pZmVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42MWM1MGYy
YmUxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
IDogTlNPYmplY3QgPE5TQ29kaW5nPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpzaG9ydE5hbWU7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqYXBwbGljYXRp
b25EZXNjcmlwdGlvbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUs
IGNvcHkpIE5TVVJMICpzY29wZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNVUkwgKnN0YXJ0VVJMOworCisrIChfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICopYXBwbGlj
YXRpb25NYW5pZmVzdEZyb21KU09OOihOU1N0cmluZyAqKWpzb24gbWFuaWZlc3RVUkw6KE5TVVJM
ICopbWFuaWZlc3RVUkwgZG9jdW1lbnRVUkw6KG51bGxhYmxlIE5TVVJMICopZG9jdW1lbnRVUkw7
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uNGY1ZTlhMTU5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpAQCAtMCwwICsxLDE2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLQXBwbGlj
YXRpb25NYW5pZmVzdEludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5oPgorCitAaW1wbGVtZW50YXRpb24gX1dLQXBwbGljYXRpb25N
YW5pZmVzdAorCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWFEZWNvZGVyCit7CisgICAgTlNTdHJpbmcg
Km5hbWUgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAibmFtZSJdOworICAgIE5TU3Ry
aW5nICpzaG9ydE5hbWUgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAic2hvcnRfbmFt
ZSJdOworICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RG
b3JLZXk6QCJkZXNjcmlwdGlvbiJdOworICAgIE5TVVJMICpzY29wZVVSTCA9IFthRGVjb2RlciBk
ZWNvZGVPYmplY3RGb3JLZXk6QCJzY29wZSJdOworICAgIE5TVVJMICpzdGFydFVSTCA9IFthRGVj
b2RlciBkZWNvZGVPYmplY3RGb3JLZXk6QCJzdGFydF91cmwiXTsKKworICAgIFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3QgY29yZUFwcGxpY2F0aW9uTWFuaWZlc3QgeworICAgICAgICBXVEY6
OlN0cmluZyhuYW1lKSwKKyAgICAgICAgV1RGOjpTdHJpbmcoc2hvcnROYW1lKSwKKyAgICAgICAg
V1RGOjpTdHJpbmcoZGVzY3JpcHRpb24pLAorICAgICAgICBXZWJDb3JlOjpVUkwoc2NvcGVVUkwp
LAorICAgICAgICBXZWJDb3JlOjpVUkwoc3RhcnRVUkwpCisgICAgfTsKKworICAgIEFQSTo6T2Jq
ZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0PihzZWxmLCBX
VEZNb3ZlKGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0KSk7CisKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2FwcGxpY2F0aW9uTWFuaWZlc3QtPn5BcHBsaWNh
dGlvbk1hbmlmZXN0KCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpZW5j
b2RlV2l0aENvZGVyOihOU0NvZGVyICopYUNvZGVyCit7CisgICAgW2FDb2RlciBlbmNvZGVPYmpl
Y3Q6c2VsZi5uYW1lIGZvcktleTpAIm5hbWUiXTsKKyAgICBbYUNvZGVyIGVuY29kZU9iamVjdDpz
ZWxmLnNob3J0TmFtZSBmb3JLZXk6QCJzaG9ydF9uYW1lIl07CisgICAgW2FDb2RlciBlbmNvZGVP
YmplY3Q6c2VsZi5hcHBsaWNhdGlvbkRlc2NyaXB0aW9uIGZvcktleTpAImRlc2NyaXB0aW9uIl07
CisgICAgW2FDb2RlciBlbmNvZGVPYmplY3Q6c2VsZi5zY29wZSBmb3JLZXk6QCJzY29wZSJdOwor
ICAgIFthQ29kZXIgZW5jb2RlT2JqZWN0OnNlbGYuc3RhcnRVUkwgZm9yS2V5OkAic3RhcnRfdXJs
Il07Cit9CisKKysgKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0
RnJvbUpTT046KE5TU3RyaW5nICopanNvbiBtYW5pZmVzdFVSTDooTlNVUkwgKiltYW5pZmVzdFVS
TCBkb2N1bWVudFVSTDooTlNVUkwgKilkb2N1bWVudFVSTAoreworICAgIGF1dG8gbWFuaWZlc3Qg
PSBXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyOjpwYXJzZShXVEY6OlN0cmluZyhq
c29uKSwgV2ViQ29yZTo6VVJMKG1hbmlmZXN0VVJMKSwgV2ViQ29yZTo6VVJMKGRvY3VtZW50VVJM
KSk7CisgICAgcmV0dXJuIFtBUEk6OndyYXBwZXIoQVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0Ojpj
cmVhdGUobWFuaWZlc3QpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworfQorCistIChBUEk6Ok9i
amVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2FwcGxpY2F0aW9uTWFuaWZlc3Q7Cit9
CisKK3N0YXRpYyBOU1N0cmluZyAqbnVsbGFibGVOU1N0cmluZyhjb25zdCBXVEY6OlN0cmluZyYg
c3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmcuaXNOdWxsKCkgPyBuaWwgOiAoTlNTdHJpbmcg
KilzdHJpbmc7Cit9CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIHJldHVybiBudWxsYWJs
ZU5TU3RyaW5nKF9hcHBsaWNhdGlvbk1hbmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkubmFt
ZSk7Cit9CisKKy0gKE5TU3RyaW5nICopc2hvcnROYW1lCit7CisgICAgcmV0dXJuIG51bGxhYmxl
TlNTdHJpbmcoX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5zaG9y
dE5hbWUpOworfQorCistIChOU1N0cmluZyAqKWFwcGxpY2F0aW9uRGVzY3JpcHRpb24KK3sKKyAg
ICByZXR1cm4gbnVsbGFibGVOU1N0cmluZyhfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRp
b25NYW5pZmVzdCgpLmRlc2NyaXB0aW9uKTsKK30KKworLSAoTlNVUkwgKilzY29wZQoreworICAg
IHJldHVybiBfYXBwbGljYXRpb25NYW5pZmVzdC0+YXBwbGljYXRpb25NYW5pZmVzdCgpLnNjb3Bl
OworfQorCistIChOU1VSTCAqKXN0YXJ0VVJMCit7CisgICAgcmV0dXJuIF9hcHBsaWNhdGlvbk1h
bmlmZXN0LT5hcHBsaWNhdGlvbk1hbmlmZXN0KCkuc3RhcnRVUkw7Cit9CisKKyNlbHNlIC8vIEVO
QUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworKyAoX1dLQXBwbGljYXRpb25NYW5pZmVzdCAq
KWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNTdHJpbmcgKilqc29uIG1hbmlmZXN0VVJM
OihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJMOihOU1VSTCAqKWRvY3VtZW50VVJMCit7
CisgICAgVU5VU0VEX1BBUkFNKGpzb24pOworICAgIFVOVVNFRF9QQVJBTShtYW5pZmVzdFVSTCk7
CisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50VVJMKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAq
KWFEZWNvZGVyCit7CisgICAgVU5VU0VEX1BBUkFNKGFEZWNvZGVyKTsKKyAgICBbc2VsZiByZWxl
YXNlXTsKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlND
b2RlciAqKWFDb2RlcgoreworICAgIFVOVVNFRF9QQVJBTShhQ29kZXIpOworfQorCistIChOU1N0
cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1N0cmluZyAqKXNob3J0
TmFtZQoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopYXBwbGljYXRpb25E
ZXNjcmlwdGlvbgoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TVVJMICopc2NvcGUKK3sK
KyAgICByZXR1cm4gbmlsOworfQorCistIChOU1VSTCAqKXN0YXJ0VVJMCit7CisgICAgcmV0dXJu
IG5pbDsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKworQGVu
ZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50
ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmI4Nzg4NmMx
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElBcHBsaWNhdGlvbk1hbmlmZXN0Lmgi
CisjaW1wb3J0ICJfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmgiCisjaW1wb3J0IDxXZWJDb3JlL0Fw
cGxpY2F0aW9uTWFuaWZlc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEFwcGxp
Y2F0aW9uTWFuaWZlc3Q7Cit9CisKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCitu
YW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKndyYXBwZXIo
QVBJOjpBcHBsaWNhdGlvbk1hbmlmZXN0JiBhcHBsaWNhdGlvbk1hbmlmZXN0KQoreworICAgIEFT
U0VSVChbYXBwbGljYXRpb25NYW5pZmVzdC53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXBw
bGljYXRpb25NYW5pZmVzdCBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0LndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJm
YWNlIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAg
IEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IF9hcHBsaWNhdGlv
bk1hbmlmZXN0OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggY2QyMDM1NWYwMmEuLjQ5OTc1Y2U4NWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTUzMTMsNiArNTMxMywxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWRpdGluZ1JhbmdlQ2FsbGJhY2soY29uc3QgRWRpdGluZ1Jh
bmdlJiByYW5nZSwgQ2FsbGJhY2tJRCBjYQogICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tX
aXRoUmV0dXJuVmFsdWUocmFuZ2UpOwogfQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQordm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdE9y
TnVsbCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2Nh
bGxiYWNrcy50YWtlPEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjaz4oY2FsbGJhY2tJRCk7Cisg
ICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShtYW5pZmVzdE9yTnVsbCk7Cit9CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKENPQ09BKQogdm9pZCBXZWJQYWdlUHJveHk6Om1hY2hTZW5kUmlnaHRDYWxs
YmFjayhjb25zdCBNYWNoU2VuZFJpZ2h0JiBzZW5kUmlnaHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKQEAgLTcyMzEsNCArNzI0MiwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3Zl
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQor
dm9pZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAgICBpZiAoIWlzVmFsaWQo
KSkgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHN0ZDo6bnVsbG9wdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX2xv
YWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDE2YjVhZWI5N2M5Li4wZDVj
OGUxYTE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNTgs
NiArMTU4LDcgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dEluZGljYXRvcjsKIGNs
YXNzIFZhbGlkYXRpb25CdWJibGU7CiAKK3N0cnVjdCBBcHBsaWNhdGlvbk1hbmlmZXN0Owogc3Ry
dWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgRXhjZXB0aW9uRGV0YWlsczsKIHN0cnVj
dCBGaWxlQ2hvb3NlclNldHRpbmdzOwpAQCAtMjY2LDYgKzI2NywxMCBAQCBzdHJ1Y3QgUXVldWVk
VG91Y2hFdmVudHMgewogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgYm9v
bCwgaW50MzJfdD4gVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gUmVjdEZv
ckNoYXJhY3RlclJhbmdlQ2FsbGJhY2s7CiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jj4gQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrOworI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpCiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBB
dHRyaWJ1dGVkU3RyaW5nJiwgY29uc3QgRWRpdGluZ1JhbmdlJj4gQXR0cmlidXRlZFN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBT
dHJpbmcmLCBkb3VibGUsIGJvb2w+IEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrOwpAQCAtMTI0NCw2
ICsxMjQ5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVu
dFR5cGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiYmIG5ld0NvbnRlbnRUeXBlLCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4mJiBuZXdGaWxlbmFtZSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICB2
b2lkIGdldEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25zdCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBX
ZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMTUwNCw2ICsxNTEz
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0
cmluZyYsIGJvb2wsIGludCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1bnNpZ25lZENhbGxiYWNr
KHVpbnQ2NF90LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGVkaXRpbmdSYW5nZUNhbGxiYWNrKGNv
bnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrSUQpOworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKyAgICB2b2lkIGFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiwgQ2FsbGJhY2tJRCk7Cisj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIG1hY2hTZW5kUmlnaHRDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiwgQ2FsbGJhY2tJRCk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCAxMjY4Y2U0YjczYi4uM2MxOTBlOWY1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE2Nyw2ICsxNjcsOSBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIEVkaXRpbmdSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJL
aXQ6OkVkaXRpbmdSYW5nZSByYW5nZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAg
ICAgVW5zaWduZWRDYWxsYmFjayh1aW50NjRfdCByZXN1bHQsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogICAgIFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKFdlYkNvcmU6Oklu
dFJlY3QgcmVjdCwgc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIGFjdHVhbFJhbmdlLCBXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCisgICAgQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNrKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6QXBwbGljYXRpb25NYW5pZmVzdD4gbWFuaWZlc3QsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQorI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEF0dHJpYnV0ZWRTdHJpbmdG
b3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKHN0cnVjdCBXZWJLaXQ6OkF0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgYWN0dWFsUmFuZ2UsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKFN0cmlu
ZyBmb250TmFtZSwgZG91YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvSGFzTXVsdGlwbGVGb250
cywgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNjQ1ZTdkMzZjYS4uZDczMDlmNjAx
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIyOCw2ICsxMjI4LDEwIEBACiAJCTVDRTg1QjIwMUM4OEU2NEIwMDcwQkZDRSAvKiBQ
aW5nTG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUNFODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi87IH07CiAJCTVDRkVDQjA0
MUUxRUQxQ0MwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNGRUNCMDMxRTFFRDFD
ODAwRjg4NTA0IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHAgKi87IH07CiAJCTYx
N0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25N
YW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTYzMTA4Rjk3MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTUx
Rjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi87IH07CisJCTYz
MTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsg
fTsKKwkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CiAJCTYz
NjM1M0E1MUU5ODU4REYwMDA5RjhBRiAvKiBfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3Zp
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0ZB
QkUxOTFFOTcwRDY1MDAzMDExRDUgLyogX1dLR2VvbG9jYXRpb25Db3JlTG9jYXRpb25Qcm92aWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
QzMyQzI1MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNDMzJDMjMxRTk4MTBE
OTAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0gKi87IH07CiAJCTYzQzMyQzI2
MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tHZW9sb2NhdGlvblBvc2l0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2M0MzMkMyNDFFOTgxMEQ5MDA2OTlC
RDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNjE4LDYgKzM2MjIsMTAgQEAKIAkJNUQ0NDJBNTUx
NkQ1ODU2NzAwQUMzMzMxIC8qIFBsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSBQ
bHVnaW5TZXJ2aWNlLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzMTA4Rjk1MUY5Njcx
OUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTND
IC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXBwbGljYXRp
b25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2M0MzMkMyMzFFOTgx
MEQ5MDA2OTlCRDAgLyogX1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzQzMyQzI0MUU5ODEwRDkwMDY5OUJEMCAvKiBfV0tH
ZW9sb2NhdGlvblBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9X
S0dlb2xvY2F0aW9uUG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjND
MzJDMjcxRTk4MTE5MDAwNjk5QkQwIC8qIF9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tHZW9sb2NhdGlvblBvc2l0aW9u
SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3OTUsNiArNTgwMyw5
IEBACiAJCQkJMzdBNUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvLmggKi8sCiAJCQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvLm1tICovLAogCQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi8sCisJCQkJNjMxMDhGOTQxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLywKKwkJCQk2MzEwOEY5NTFGOTY3MTlD
MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLywKKwkJCQk2MzEwOEY5ODFG
OTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmggKi8sCiAJ
CQkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLywKIAkJCQlG
NDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLywKIAkJCQlGNDQy
OTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi8sCkBAIC03
MTk1LDYgKzcyMDYsNyBAQAogCQkJCTM3QzRDMDgzMTgxNDlDMkEwMDM2ODhCOSAvKiBDb2NvYSAq
LywKIAkJCQlCQzhBNTAxMzExNzY1RjQ1MDA3NTc1NzMgLyogY3BwICovLAogCQkJCUJDMTExQjQ3
MTEyRjYxNjkwMDMzN0JBQiAvKiBtYWMgKi8sCisJCQkJNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTND
IC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLywKIAkJCQkyRTVDNzcwRDFGQTdENDI5MDA1
OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8sCiAJCQkJMkU1Qzc3MEMxRkE3RDQyOTAwNTkz
MkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIg
LyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovLApAQCAtODQ2Miw2ICs4NDc0LDggQEAKIAkJCWZp
bGVzID0gKAogCQkJCTM3QTVFMDE0MThCQkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8q
IF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTYz
MTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk2MzEwOEY5OTFGOTY3MUY3MDBBMERCODQgLyogX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDQyOTE5MjFGQTU5MUM5MDAy
Q0M5M0UgLyogX1dLQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0MjkxOTYxRkE1
OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04NTM3LDYgKzg1NTEsNyBAQAogCQkJCUExOUREM0MwMUQwN0QxNjgw
MEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDc5MkQ4MTc2N0NDQTMwMDg4MUNCRSAvKiBBY3Rpdml0eUFz
c2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8q
IEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2OTcwMTFE
QkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkU1Qzc3MEUx
RkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwMTEwLDYgKzEwMTI1LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyogX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJCQk2MzEwOEY5NzFGOTY3
MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUY0NDI5MTk0MUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTkwRDI4QjIxQzY1MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNz
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTk3ODhBQ0MxRjQyMURFMjAwQzA4MDAwIC8qIF9X
S0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNzg2NmE3N2U4MzIuLmFiMGE1NmJlNDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE4NDAsNCArMTg0MCwxNSBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgU2hhcgogICAgIH0KIH0KIAorI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0Fw
cGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKK3sKKyAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2ViUGFnZS0+ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0
aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVudGlmaWVyLCBtYW5pZmVzdCk7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNWEyMmYwZDc2NmEuLjI5MGQxYmJlZDNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjYyLDYgKzI2MiwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKICAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZ0ljb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXIqKSBmaW5hbDsKIAorI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAg
ICB2b2lkIGZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKKyNl
bmRpZgorCiAgICAgV2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1f
cGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MTlmZDUy
NjRkNy4uYTkxOGVjNmU1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC01ODk4LDQgKzU4OTgsMzIgQEAgUmVmUHRyPEhUTUxBdHRhY2htZW50
RWxlbWVudD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihjb25zdCBT
dHIKIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKKyNpZiBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCit2b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZl
c3QoQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIEFTU0VSVChjYWxsYmFja0lELmlzVmFs
aWQoKSk7CisgICAgRG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWlu
RnJhbWVEb2N1bWVudCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CisK
KyAgICBpZiAoIWxvYWRlcikgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhzdGQ6Om51bGxvcHQsIGNhbGxiYWNrSUQpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY29yZUNhbGxiYWNrSUQgPSBsb2Fk
ZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CisgICAgaWYgKCFjb3JlQ2FsbGJhY2tJRCkg
eworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkFwcGxpY2F0aW9uTWFuaWZl
c3RDYWxsYmFjayhzdGQ6Om51bGxvcHQsIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAuYWRkKGNv
cmVDYWxsYmFja0lELCBjYWxsYmFja0lELnRvSW50ZWdlcigpKTsKK30KKwordm9pZCBXZWJQYWdl
OjpkaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjb3JlQ2FsbGJh
Y2tJRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYg
bWFuaWZlc3QpCit7CisgICAgYXV0byBjYWxsYmFja0lEID0gQ2FsbGJhY2tJRDo6ZnJvbUludGVn
ZXIobV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC50YWtlKGNvcmVDYWxsYmFj
a0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBcHBsaWNhdGlvbk1hbmlm
ZXN0Q2FsbGJhY2sobWFuaWZlc3QsIGNhbGxiYWNrSUQpKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUo
QVBQTElDQVRJT05fTUFOSUZFU1QpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGYyNjUwMzg1NmNmLi4wOTA5
MTI1M2NhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtODcsNiArODcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisjaW5jbHVk
ZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShJ
T1NfVE9VQ0hfRVZFTlRTKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QbGF0Zm9ybVRvdWNo
RXZlbnRJT1MuaD4KICNlbGlmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC0xMDMxLDYgKzEwMzUs
MTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXR0YWNobWVudERhdGFBbmRDb250ZW50VHlwZShj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBuZXdDb250ZW50VHlwZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG5l
d0ZpbGVuYW1lLCBDYWxsYmFja0lEKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQorICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChDYWxsYmFja0lEKTsK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMTY0NSw2ICsxNjU0LDEwIEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVy
VG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQgKGJvb2wgZ3JhbnRlZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNh
bGxiYWNrTWFwOworCisjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIEhhc2hN
YXA8dWludDY0X3QsIHVpbnQ2NF90PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNr
TWFwOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IGZh
ZjRjY2JkYmY1Li5mMmYxOGNiNTljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00OTEsNCArNDkxLDggQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0QXR0YWNobWVudERpc3Bs
YXlPcHRpb25zKFN0cmluZyBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6QXR0YWNobWVudERp
c3BsYXlPcHRpb25zIG9wdGlvbnMsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAg
IFNldEF0dGFjaG1lbnREYXRhQW5kQ29udGVudFR5cGUoU3RyaW5nIGlkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbmV3Q29udGVudFR5cGUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBuZXdGaWxlbmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAjZW5kaWYKKworI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAg
ICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMGMzOGFiODdiM2IuLjc5ZDk4ZWI5MDNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMTItMDEgIERh
dmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFw
cCBNYW5pZmVzdF0gQWRkIFNQSSBmb3IgZmV0Y2hpbmcgdGhlIG1hbmlmZXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAyOTQKKyAgICAgICAgcmRh
cjovL3Byb2JsZW0vMzQ3NDc5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJl
bi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QXBwbGljYXRpb25NYW5pZmVzdC5tbTogQWRkZWQuCisgICAgICAgICAgICBBZGRlZCB0d28gQVBJ
IHRlc3RzIGZvciBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OgorICAgICAgICAgICAgLSBUZXN0aW5n
IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QncyBjb25mb3JtYW5jZSB0byBOU0NvZGluZy4KKyAgICAg
ICAgICAgIC0gVGVzdGluZyAtW1dLV2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhD
b21wbGV0aW9uSGFuZGxlcjpdLCB2ZXJpZnlpbmcgdGhlCisgICAgICAgICAgICAgIHZhbHVlcyBv
ZiB0aGUgcmVzdWx0aW5nIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0
UnVubmVyIG1ldGhvZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbigpLCB1c2VkIGJ5IHRoZSBM
YXlvdXRUZXN0cworICAgICAgICAgICAgdG8gcmVxdWVzdCB0aGUgZG9jdW1lbnQgbG9hZCBpdHMg
YXNzb2NpYXRlZCBtYW5pZmVzdC4gVGhlIGxheW91dCB0ZXN0cyBmb3JtZXJseSBjYWxsZWQKKyAg
ICAgICAgICAgIGFuIHVuaW1wbGVtZW50ZWQgZnVuY3Rpb24gZ2V0TWFuaWZlc3RUaGVuKCksIGJ1
dCBJIGFkZGVkICdBcHBsaWNhdGlvbicgdG8gc29tZXdoYXQKKyAgICAgICAgICAgIGRpZmZlcmVu
dGlhdGUgdGhpcyBmcm9tIHRoZSBhcHAgY2FjaGUgbWFuaWZlc3QuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0UnVubmVyOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbik6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisKIDIwMTctMTItMDUgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29t
PgogCiAgICAgICAgIFN3aXRjaCB3aW5kb3dzIGJ1aWxkIHRvIFZpc3VhbCBTdHVkaW8gMjAxNwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMDBjNzc4ZmE5Zi4uNjBiZGUyZDI3ZDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAsNiArMjYwLDcgQEAKIAkJNjM1NEY0RDExRjdDM0FC
NTAwRDg5REYzIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1NEY0RDAxRjdDM0FCNTAwRDg5REYz
IC8qIEFwcGxpY2F0aW9uTWFuaWZlc3RQYXJzZXIuY3BwICovOyB9OwogCQk2MzU2RkIyMjFFQzRF
MEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM1NkZCMjExRUM0RTBCQTAwNDRCRjE4IC8qIFZp
c2libGVDb250ZW50UmVjdC5tbSAqLzsgfTsKIAkJNjM2MzUzQTcxRTk4NjY1RDAwMDlGOEFGIC8q
IEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM2MzUzQTYxRTk4NjE5NDAw
MDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0aW9uUmVzdWx0Lmh0bWwgKi87IH07
CisJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNGNjY4MjAxRjk3
QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi87IH07CiAJCTZCRkQyOTRD
MUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0RjE1N0QgLyog
SGFzaENvdW50ZWRTZXQuY3BwICovOyB9OwogCQk3NTFCMDVENjFGOEVBQzQxMDAyOEEwOUUgLyog
RGF0YWJhc2VUcmFja2VyVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1MUIwNUQ1MUY4RUFDMUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNrZXJU
ZXN0Lm1tICovOyB9OwogCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFp
bGFibGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTRDRUM4MDFGNjcyMkRDMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0gKi87IH07CkBA
IC0xNDAzLDYgKzE0MDQsNyBAQAogCQk2MzU0RjREMDFGN0MzQUI1MDBEODlERjMgLyogQXBwbGlj
YXRpb25NYW5pZmVzdFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsaWNhdGlvbk1h
bmlmZXN0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjM1NkZCMjEx
RUM0RTBCQTAwNDRCRjE4IC8qIFZpc2libGVDb250ZW50UmVjdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFZpc2libGVDb250ZW50UmVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjM2MzUzQTYxRTk4NjE5NDAwMDlGOEFGIC8qIEdlb2xvY2F0aW9uR2V0Q3VycmVudFBvc2l0
aW9uUmVzdWx0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBHZW9sb2NhdGlvbkdl
dEN1cnJlbnRQb3NpdGlvblJlc3VsdC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc1MUIwNUQ1MUY4RUFDMUEwMDI4QTA5RSAvKiBEYXRhYmFzZVRyYWNr
ZXJUZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VUcmFja2VyVGVzdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU0Q0VDODAxRjY3MjJEQzAwRDAwMzlBIC8q
IEF1dG9GaWxsQXZhaWxhYmxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXV0b0ZpbGxBdmFp
bGFibGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NjA5MTc3MTkyNTlDNTkw
MDlFRjA2RSAvKiBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9T
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAwMiw2ICsyMDA0LDcgQEAKIAkJ
CQkzN0U3REQ2NTFFQTA3MTVCMDA5QjM5NkQgLyogQWRkaXRpb25hbFJlYWRBY2Nlc3NBbGxvd2Vk
VVJMc1Byb3RvY29sLmggKi8sCiAJCQkJQTFERjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5
c1JldmFsaWRhdGVkVVJMU2NoZW1lcy5tbSAqLywKIAkJCQkyREU3MUFGRDFENDlDMEJEMDA5MDQw
OTQgLyogQW5pbWF0ZWRSZXNpemUubW0gKi8sCisJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUx
IC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gKi8sCiAJCQkJNzU0Q0VDODAxRjY3MjJEQzAwRDAw
MzlBIC8qIEF1dG9GaWxsQXZhaWxhYmxlLm1tICovLAogCQkJCTJERDM1NTM1MUJEMDgzNzgwMDVE
RjRBNyAvKiBBdXRvTGF5b3V0SW50ZWdyYXRpb24ubW0gKi8sCiAJCQkJMzc0QjdBNUUxREYzNkVF
RTAwQUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0ZS5tbSAqLywKQEAgLTMyNTYsNiArMzI1
OSw3IEBACiAJCQkJN0E5MDlBN0QxRDg3NzQ4MDAwN0UxMEY4IC8qIEFmZmluZVRyYW5zZm9ybS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMURGNzQzMjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNzFBRkUxRDQ5
QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVkUmVzaXplLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNjNG
NjY4MjIxRjk3RjdGOTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZlc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQk2MzU0RjREMTFGN0MzQUI1MDBEODlERjMgLyogQXBwbGljYXRpb25NYW5pZmVz
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMg
LyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQzhFNDhEMUJDNUNC
NDUwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi43MTBhNzdhYWE3YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbQpAQCAtMCwwICsxLDEwNyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQg
JiYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFu
aWZlc3RDb2RpbmcpCit7CisgICAgYXV0byBqc29uU3RyaW5nID0gQCJ7IFwibmFtZVwiOiBcIlRl
c3ROYW1lXCIsIFwic2hvcnRfbmFtZVwiOiBcIlRlc3RTaG9ydE5hbWVcIiwgXCJkZXNjcmlwdGlv
blwiOiBcIlRlc3REZXNjcmlwdGlvblwiLCBcInNjb3BlXCI6IFwiaHR0cHM6Ly90ZXN0LmNvbS9h
cHBcIiwgXCJzdGFydF91cmxcIjogXCJodHRwczovL3Rlc3QuY29tL2FwcC9pbmRleC5odG1sXCIg
fSI7CisgICAgUmV0YWluUHRyPF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0IHsgW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOmpzb25TdHJp
bmcgbWFuaWZlc3RVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QuY29tL21h
bmlmZXN0Lmpzb24iXSBkb2N1bWVudFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
dGVzdC5jb20vIl1dIH07CisgICAgCisgICAgbWFuaWZlc3QgPSBbTlNLZXllZFVuYXJjaGl2ZXIg
dW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6W05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRo
Um9vdE9iamVjdDptYW5pZmVzdC5nZXQoKV1dOworICAgIAorICAgIEVYUEVDVF9UUlVFKFttYW5p
ZmVzdCBpc0tpbmRPZkNsYXNzOltfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGNsYXNzXV0pOworICAg
IEVYUEVDVF9TVFJFUSgiVGVzdE5hbWUiLCBtYW5pZmVzdC5nZXQoKS5uYW1lLlVURjhTdHJpbmcp
OworICAgIEVYUEVDVF9TVFJFUSgiVGVzdFNob3J0TmFtZSIsIG1hbmlmZXN0LmdldCgpLnNob3J0
TmFtZS5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlRlc3REZXNjcmlwdGlvbiIsIG1h
bmlmZXN0LmdldCgpLmFwcGxpY2F0aW9uRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7CisgICAgRVhQ
RUNUX1NUUkVRKCJodHRwczovL3Rlc3QuY29tL2FwcCIsIG1hbmlmZXN0LmdldCgpLnNjb3BlLmFi
c29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgiaHR0cHM6Ly90ZXN0
LmNvbS9hcHAvaW5kZXguaHRtbCIsIG1hbmlmZXN0LmdldCgpLnN0YXJ0VVJMLmFic29sdXRlU3Ry
aW5nLlVURjhTdHJpbmcpOworfQorCitURVNUKFdlYktpdCwgQXBwbGljYXRpb25NYW5pZmVzdEJh
c2ljKQoreworICAgIHN0YXRpYyBib29sIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1Jl
Y3RdKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCIiXTsKKyAg
ICBbd2ViVmlldy5nZXQoKSBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKG1hbmlmZXN0KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJpbnZh
bGlkdXJsOi8vcGF0aFwiPiJdOworICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0
V2l0aENvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3Qp
IHsKKyAgICAgICAgRVhQRUNUX05VTEwobWFuaWZlc3QpOworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAg
IE5TRGljdGlvbmFyeSAqbWFuaWZlc3RPYmplY3QgPSBAeyBAIm5hbWUiOiBAIlRlc3QiIH07Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiPGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZGF0YTphcHBsaWNhdGlv
bi9tYW5pZmVzdCtqc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCVAXCI+IiwgW1tOU0pTT05TZXJp
YWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDptYW5pZmVzdE9iamVjdCBvcHRpb25zOjAgZXJy
b3I6bmlsXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF1dXTsKKyAgICBbd2ViVmll
dyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFttYW5pZmVz
dC5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIlRlc3QiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAg
bWFuaWZlc3RPYmplY3QgPSBAeworICAgICAgICBAIm5hbWUiOiBAIkEgV2ViIEFwcGxpY2F0aW9u
IiwKKyAgICAgICAgQCJzaG9ydF9uYW1lIjogQCJXZWJBcHAiLAorICAgICAgICBAImRlc2NyaXB0
aW9uIjogQCJIZWxsby4iLAorICAgICAgICBAInN0YXJ0X3VybCI6IEAiaHR0cDovL2V4YW1wbGUu
Y29tL2FwcC9zdGFydCIsCisgICAgICAgIEAic2NvcGUiOiBAImh0dHA6Ly9leGFtcGxlLmNvbS9h
cHAiLAorICAgIH07CisgICAgTlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1cImRhdGE6dGV4dC9wbGFp
bjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwiPiIsIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRh
V2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmplY3Qgb3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0
RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpodG1sU3RyaW5nIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBs
ZS5jb20vYXBwL2luZGV4Il1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKyAgICBbd2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21w
bGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdC5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIkEgV2ViIEFw
cGxpY2F0aW9uIl0pOworICAgICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3Quc2hvcnROYW1lIGlz
RXF1YWxUb1N0cmluZzpAIldlYkFwcCJdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW21hbmlmZXN0
LmFwcGxpY2F0aW9uRGVzY3JpcHRpb24gaXNFcXVhbFRvU3RyaW5nOkAiSGVsbG8uIl0pOworICAg
ICAgICBFWFBFQ1RfVFJVRShbbWFuaWZlc3Quc3RhcnRVUkwgaXNFcXVhbDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS9hcHAvc3RhcnQiXV0pOworICAgICAgICBFWFBF
Q1RfVFJVRShbbWFuaWZlc3Quc2NvcGUgaXNFcXVhbDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHA6Ly9leGFtcGxlLmNvbS9hcHAiXV0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAzMzJmZTI2MWM2ZS4uYThiYzdjYmYy
MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzA2LDQgKzMwNiw2IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAK
ICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhvYmplY3QgY2FsbGJhY2spOwor
CisgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbihvYmplY3QgY2FsbGJhY2spOwog
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYzkzMzlmMDFmMzAuLjU2YjBkY2RkYjU0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcApAQCAtMjk4LDYgKzI5OCwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRS
ZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCIpKSB7Cisg
ICAgICAgIG1fdGVzdFJ1bm5lci0+ZGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBlcnJv
ck1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFcnJv
ciIpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZXJyb3JNZXNzYWdlQm9keShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVW5rbm93biIpKTsKICAgICBXS0J1
bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCBlcnJvck1lc3NhZ2VOYW1lLmdldCgpLCBlcnJvck1l
c3NhZ2VCb2R5LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGNiNTY3MGJlOTFkLi5hYTk4ZDBjYzVkZiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC02NTIsNiArNjUyLDcgQEAgZW51bSB7CiAgICAgU3RhdGlzdGljc0RpZFJ1
blRlbGVtZXRyeUNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZENsZWFyVGhyb3VnaFdlYnNp
dGVEYXRhUmVtb3ZhbENhbGxiYWNrSUQsCiAgICAgRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRp
YWxzQ2FsbGJhY2tJRCwKKyAgICBHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tJRCwKICAg
ICBGaXJzdFVJU2NyaXB0Q2FsbGJhY2tJRCA9IDEwMAogfTsKIApAQCAtMTg3NCw0ICsxODc1LDE3
IEBAIHVpbnQ2NF90IFRlc3RSdW5uZXI6OmRvbUNhY2hlU2l6ZShKU1N0cmluZ1JlZiBvcmlnaW4p
CiAgICAgcmV0dXJuIFdLVUludDY0R2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tVSW50NjRSZWY+KHJl
dHVybkRhdGEpKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
VGhlbihKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNr
KEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAgCisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpOworICAgIFdLQnVu
ZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVu
ZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpkaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKK3sKKyAgICBjYWxsVGVzdFJ1
bm5lckNhbGxiYWNrKEdldEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja0lEKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGQzNjkxMGQwMzFlLi5kNjQ0OTQzMTdjYSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgK
QEAgLTQwNSw2ICs0MDUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFscyhKU1ZhbHVlUmVmKTsKICAgICB2b2lkIGNhbGxEaWRSZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHNDYWxsYmFjaygpOworICAgIAorICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5p
ZmVzdFRoZW4oSlNWYWx1ZVJlZik7CisgICAgdm9pZCBkaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KCk7CiAKIHByaXZhdGU6CiAgICAgVGVzdFJ1bm5lcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyY2E3ZTUyM2NjMi4uNzUzNzJlN2JmZDggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMjQ2LDYgKzEyNDYs
MTkgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkdldEFwcGxpY2F0aW9uTWFuaWZlc3QiKSkgeworI2lmZGVmIF9fQkxPQ0tTX18KKyAgICAgICAg
V0tQYWdlR2V0QXBwbGljYXRpb25NYW5pZmVzdF9iKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5tYWluV2ViVmlldygpLT5wYWdlKCksIF57CisgICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpOworICAgICAgICAgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKKyAgICAgICAgfSk7Cisj
ZWxzZQorICAgICAgICAvLyBGSVhNRTogQWRkIEFQSSBmb3IgbG9hZGluZyB0aGUgbWFuaWZlc3Qg
b24gbm9uLV9fQkxPQ0tTX18gcG9ydHMuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>