<?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>204758</bug_id>
          
          <creation_ts>2019-12-02 10:22:27 -0800</creation_ts>
          <short_desc>Add helper methods for description and equality to text manipulation SPI</short_desc>
          <delta_ts>2019-12-02 14:31:07 -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>HTML Editing</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="Louie Livon-Bemel">llivonbemel</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>david_quesada</cc>
    
    <cc>llivonbemel</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594680</commentid>
    <comment_count>0</comment_count>
    <who name="Louie Livon-Bemel">llivonbemel</who>
    <bug_when>2019-12-02 10:22:27 -0800</bug_when>
    <thetext>Add helper methods to _WKTextManipulationItem and _WKTextManipulationToken to make working with them easier; add methods to see if two are equal (optionally ignoring the actual content on the page), and add methods for getting both a description for use in lldb, and a privacy preserving description so the object can be logged without logging any contents of the webpage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594681</commentid>
    <comment_count>1</comment_count>
    <who name="Louie Livon-Bemel">llivonbemel</who>
    <bug_when>2019-12-02 10:23:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/57438200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594699</commentid>
    <comment_count>2</comment_count>
      <attachid>384640</attachid>
    <who name="Louie Livon-Bemel">llivonbemel</who>
    <bug_when>2019-12-02 10:56:15 -0800</bug_when>
    <thetext>Created attachment 384640
57438200.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594708</commentid>
    <comment_count>3</comment_count>
      <attachid>384640</attachid>
    <who name="David Quesada">david_quesada</who>
    <bug_when>2019-12-02 11:13:07 -0800</bug_when>
    <thetext>Comment on attachment 384640
57438200.patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm:57
&gt; +- (BOOL)isEqualToTextManipulationItem:(_WKTextManipulationItem *)otherItem includingContentEquality:(BOOL)includingContentEquality

It seems like this class should maybe also have an override of -isEqual: which calls this method with some value for `includingContentEquality`.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm:83
&gt; +- (NSString *)privacyPreservingDescription

This pattern doesn&apos;t seem common in WebKit. Is there any reason you decided not to make -description return the privacy-preserving string and implement -debugDescription to return the full string when called from the debugger?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationToken.mm:29
&gt;  @implementation _WKTextManipulationToken

Ditto my comments about the description and equality methods in this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594714</commentid>
    <comment_count>4</comment_count>
      <attachid>384640</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 11:24:14 -0800</bug_when>
    <thetext>Comment on attachment 384640
57438200.patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm:62
&gt; +    if (![self.identifier isEqualToString:otherItem.identifier] || self.tokens.count != otherItem.tokens.count)

This would return NO in the case where both self and otherItem have nil identifiers (it’s unclear to me if that is desired).

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:687
&gt; +    NSString *debugDescription = item.get().description;

Nit - We usually just use [item description] for this (or [item debugDescription], per David’s earlier comments).

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:694
&gt; +    NSString *privacyPreservingDescription = item.get().privacyPreservingDescription;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594751</commentid>
    <comment_count>5</comment_count>
    <who name="Louie Livon-Bemel">llivonbemel</who>
    <bug_when>2019-12-02 13:04:35 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 384640 [details]
&gt; 57438200.patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384640&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm:62
&gt; &gt; +    if (![self.identifier isEqualToString:otherItem.identifier] || self.tokens.count != otherItem.tokens.count)
&gt; 
&gt; This would return NO in the case where both self and otherItem have nil
&gt; identifiers (it’s unclear to me if that is desired).

I think we would want both having nil identifiers but being otherwise equal to be considered equal. I can&apos;t re-declare `isEqualOrBothNil()` in this file because of Unified Source compilation saying it&apos;s redeclared, but I&apos;ll just add the logic directly here. And I&apos;ll add a test for this as well.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:687
&gt; &gt; +    NSString *debugDescription = item.get().description;
&gt; 
&gt; Nit - We usually just use [item description] for this (or [item
&gt; debugDescription], per David’s earlier comments).

I&apos;ll change this to message syntax. Per David&apos;s suggestion, I&apos;m also making -description be the privacy preserving method, removing -privacyPreservingDescription, and adding -debugDescription which shows the full content.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:694
&gt; &gt; +    NSString *privacyPreservingDescription = item.get().privacyPreservingDescription;
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594755</commentid>
    <comment_count>6</comment_count>
      <attachid>384650</attachid>
    <who name="Louie Livon-Bemel">llivonbemel</who>
    <bug_when>2019-12-02 13:19:18 -0800</bug_when>
    <thetext>Created attachment 384650
57438200-part-2.patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594762</commentid>
    <comment_count>7</comment_count>
      <attachid>384650</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-12-02 13:32:14 -0800</bug_when>
    <thetext>Comment on attachment 384650
57438200-part-2.patch

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

LGTM, with a couple of very minor comments.

&gt; Source/WebKit/ChangeLog:35
&gt; +            The general description for should not include the webpage content.

Nit - “…description for should not…”

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKTextManipulationItem.mm:27
&gt;  #import &quot;_WKTextManipulationItem.h&quot;

Nit - we typically leave a newline below the primary header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594766</commentid>
    <comment_count>8</comment_count>
      <attachid>384654</attachid>
    <who name="Louie Livon-Bemel">llivonbemel</who>
    <bug_when>2019-12-02 13:43:32 -0800</bug_when>
    <thetext>Created attachment 384654
57438200-part-3.patch

Addressed the typo and newline in the imports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594795</commentid>
    <comment_count>9</comment_count>
      <attachid>384654</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 14:31:06 -0800</bug_when>
    <thetext>Comment on attachment 384654
57438200-part-3.patch

Clearing flags on attachment: 384654

Committed r253009: &lt;https://trac.webkit.org/changeset/253009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594796</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-02 14:31:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384640</attachid>
            <date>2019-12-02 10:56:15 -0800</date>
            <delta_ts>2019-12-02 13:19:18 -0800</delta_ts>
            <desc>57438200.patch</desc>
            <filename>file_204758.txt</filename>
            <type>text/plain</type>
            <size>34256</size>
            <attacher name="Louie Livon-Bemel">llivonbemel</attacher>
            
              <data encoding="base64">Y29tbWl0IGRlZDQ0MmNlOTk5ZmRhZmY4ODcyODU1NzA3MmM2OTRmNzNhMjg3NjENCkF1dGhvcjog
TG91aWUgTGl2b24tQmVtZWwgPGxsaXZvbmJlbWVsQGFwcGxlLmNvbT4NCkRhdGU6ICAgTW9uIERl
YyAyIDEwOjQ3OjM0IDIwMTkgLTA4MDANCg0KICAgIEFkZCBoZWxwZXIgbWV0aG9kcyBmb3IgZGVz
Y3JpcHRpb24gYW5kIGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQSQ0KICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3NTgNCiAgICA8cmRhcjovL3By
b2JsZW0vNTc0MzgyMDA+DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQppbmRleCA5ZjZlZmRlNTZjYy4uMDNlYWE2YTYyM2Qg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNTcgQEANCisyMDE5LTEyLTAyICBMb3VpZSBMaXZvbi1C
ZW1lbCAgPGxsaXZvbmJlbWVsQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBoZWxwZXIgbWV0
aG9kcyBmb3IgZGVzY3JpcHRpb24gYW5kIGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQ
SQ0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDc1
OA0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDM4MjAwPg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuDQorDQorICAgICAgICBJIG9yaWdpbmFsbHkgYWRkZWQgc29t
ZSBjYXRlZ29yeSBtZXRob2RzIHRvIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFuZCBfV0tUZXh0
TWFuaXB1bGF0aW9uVG9rZW4gd2l0aGluIFNhZmFyaQ0KKyAgICAgICAgdG8gbWFrZSB3b3JraW5n
IHdpdGggdGhlc2UgY2xhc3NlcyBlYXNpZXIuIEhvd2V2ZXIgaXQgbWFrZXMgbW9yZSBzZW5zZSB0
byBqdXN0IG1vdmUgdGhlc2UgbWV0aG9kcyBpbnRvDQorICAgICAgICB0aGUgbWFpbiBjbGFzcy4g
T25lIG1ldGhvZCBpcyBmb3IgY2hlY2tpbmcgaWYgdHdvIGluc3RhbmNlcyBhcmUgZXF1YWwgKGlu
Y2x1ZGluZyBpZGVudGlmaWVycykgYW5kIG9wdGlvbmFsbHkNCisgICAgICAgIGNoZWNraW5nIGlm
IHRoZSBjb250ZW50IGl0c2VsZiBpcyBlcXVhbC4gVGhlIG90aGVyIG1ldGhvZHMgYXJlIGZvciBk
ZWJ1ZyBkZXNjcmlwdGlvbnMgZm9yIGxsZGIsIGFuZCBhDQorICAgICAgICBtZXRob2QgdG8gZ2V0
IGEgZGVzY3JpcHRpb24gdGhhdCBwcmVzZXJ2ZXMgcHJpdmFjeTsgd2hlbiBsb2dnaW5nIHRoZSBp
bnN0YW5jZSwgdGhlIGNvbnRlbnQgb2YgdGhlIHdlYnBhZ2UNCisgICAgICAgIHNob3VsZCBiZSBy
ZWRhY3RlZC4NCisNCisgICAgICAgIFRlc3RzOiBUZXN0cyBhcmUgYWRkZWQgYXMgQVBJIHRlc3Rz
Lg0KKw0KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25J
dGVtLmg6DQorICAgICAgICAgICAgLSBBc3N1bWUgZXZlcnl0aGluZyBpcyBub24tbnVsbCB1bmxl
c3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4NCisgICAgICAgICAgICAtIEFsbG93IHRoZSBpZGVudGlm
aWVyIHRvIGJlIG5pbCwgYnV0IG5vdCB0aGUgYXJyYXkgb2YgdG9rZW5zLg0KKyAgICAgICAgICAg
IC0gQWRkIGEgbWV0aG9kIHRvIGNoZWNrIHRoZSBlcXVhbGl0eSB0byBhbm90aGVyIGl0ZW0sIG9w
dGlvbmFsbHkgaW5jbHVkaW5nIGEgY2hlY2sgZm9yIHRoZSBjb250ZW50IG9mIGVhY2gNCisgICAg
ICAgICAgICAgIHRva2VuIGJlaW5nIGVxdWFsLg0KKyAgICAgICAgICAgIC0gQWRkIGEgbWV0aG9k
IHRvIGdldCBhIGRlc2NyaXB0aW9uIHRoYXQgcHJlc2VydmVzIHByaXZhY3kgKGRvbid0IGluY2x1
ZGUgdGhlIGNvbnRlbnQgb2YgdG9rZW5zKSwgZm9yIHVzZQ0KKyAgICAgICAgICAgICAgaW4gbG9n
Z2luZy4NCisgICAgICAgICAgICAtIE5vIG5lZWQgdG8gYWRkIGEgLWRlc2NyaXB0aW9uIGRlY2xh
cmF0aW9uIHNpbmNlIGl0IGV4aXN0cyBvbiBOU09iamVjdCBhbHJlYWR5Lg0KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25JdGVtLm1tOg0KKyAgICAgICAg
KC1bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ol0pOg0KKyAgICAgICAgICAgIC0gSWYgdGhlIG90aGVy
IGl0ZW0gaXMgbmlsLCB0aGUgaWRlbnRpZmllcnMgYXJlbid0IGVxdWFsIG9yIHRoZSBudW1iZXIg
b2YgdG9rZW5zIGFyZSBtaXNtYXRjaGVkLCB0aGVzZQ0KKyAgICAgICAgICAgICAgaXRlbXMgYXJl
bid0IGVxdWFsLg0KKyAgICAgICAgICAgIC0gSnVzdCB0byBiZSBzYWZlLCBvbmx5IGl0ZXJhdGUg
dGhlIHNtYWxsZXIgb2YgdGhlIHRva2VuIGFycmF5cyBzbyB3ZSBkb24ndCBjcmFzaC4NCisgICAg
ICAgICAgICAtIENoZWNrIGlmIGVhY2ggdG9rZW4gaXMgZXF1YWwsIHBhc3NpbmcgYWxvbmcgdGhl
IGBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHlgIHBhcmFtZXRlci4NCisgICAgICAgICgtW19XS1Rl
eHRNYW5pcHVsYXRpb25JdGVtIGRlc2NyaXB0aW9uXSk6DQorICAgICAgICAgICAgVGhlIGRlc2Ny
aXB0aW9uIGZvciBkZWJ1Z2dpbmcgc2hvdWxkIGluY2x1ZGUgdGhlIHdlYnBhZ2UgY29udGVudC4N
CisgICAgICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIHByaXZhY3lQcmVzZXJ2aW5nRGVz
Y3JpcHRpb25dKToNCisgICAgICAgICAgICBEb24ndCBpbmNsdWRlIHRoZSB3ZWJwYWdlIGNvbnRl
bnQuDQorICAgICAgICAoLVtfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBfZGVzY3JpcHRpb25QcmVz
ZXJ2aW5nUHJpdmFjeTpdKToNCisgICAgICAgICAgICBJbmNsdWRlIHRoZSBzdGFuZGFyZCBkZXNj
cmlwdGlvbiBmb3JtYXQsIGFuZCBlYWNoIHRva2VuIG9uIGl0cyBvd24gbGluZS4gSWYgd2UncmUg
bm90IGluY2x1ZGluZyB0aGUgY29udGVudA0KKyAgICAgICAgICAgIHRoZW4gdXNlIGB0b2tlbi5w
cml2YWN5UHJlc2VydmluZ0Rlc2NyaXB0aW9uYC4NCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaDoNCisgICAgICAgICAgICAtIEFsc28gYXNz
dW1lIGV2ZXJ5dGhpbmcgaXMgbm9uLW51bGwuDQorICAgICAgICAgICAgLSBJZGVudGlmaWVyIGFu
ZCBDb250ZW50IGNhbiBiZSBuaWwuDQorICAgICAgICAgICAgLSBEZWNsYXJlIGEgbWV0aG9kIGZv
ciBwcml2YWN5IHByZXNlcnZpbmcgZGVzY3JpcHRpb24uDQorICAgICAgICAgICAgLSBEZWNsYXJl
IGEgbWV0aG9kIHRvIGNoZWNrIGVxdWFsaXR5LCB3aXRoIG9yIHdpdGhvdXQgdGhlIGNvbnRlbnQu
DQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2Vu
Lm1tOg0KKyAgICAgICAgKGlzRXF1YWxPckJvdGhOaWwpOg0KKyAgICAgICAgICAgIEhlbHBlciB0
aGF0IGNoZWNrcyBlcXVhbGl0eSBidXQgY29uc2lkZXJzIHR3byBuaWwgdmFsdWVzIHRvIGJlIGVx
dWFsIGFzIHdlbGwuDQorICAgICAgICAoLVtfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gaXNFcXVh
bFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOmluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpdKToNCisg
ICAgICAgICAgICBDaGVjayB0aGF0IHRoZSBleGNsdXNpb25zIGFyZSBlcXVhbCwgdGhlIGlkZW50
aWZpZXJzIGFyZSBlcXVhbCAoY29uc2lkZXJpbmcgdHdvIG5pbHMgdG8gYmUgZXF1YWwpLCBhbmQg
dGhlDQorICAgICAgICAgICAgY29udGVudCBpZiBuZWNlc3NhcnkuDQorICAgICAgICAoLVtfV0tU
ZXh0TWFuaXB1bGF0aW9uVG9rZW4gZGVzY3JpcHRpb25dKToNCisgICAgICAgICgtW19XS1RleHRN
YW5pcHVsYXRpb25Ub2tlbiBwcml2YWN5UHJlc2VydmluZ0Rlc2NyaXB0aW9uXSk6DQorICAgICAg
ICAoLVtfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gX2Rlc2NyaXB0aW9uUHJlc2VydmluZ1ByaXZh
Y3k6XSk6DQorICAgICAgICAgICAgSWYgd2UncmUgcHJlc2VydmluZyBwcml2YWN5LCBsb2cgdGhl
IGNvbnRlbnQgbGVuZ3RoIHJhdGhlciB0aGFuIHRoZSBjb250ZW50IHN0cmluZyBpdHNlbGYuDQor
DQogMjAxOS0xMS0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPg0KIA0KICAgICAg
ICAgVW5yZXZpZXdlZCwgZml4IHdlYmtpdHB5IGZhaWx1cmVzIGFmdGVyIHIyNTI2NTUuDQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVs
YXRpb25JdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW0uaA0KaW5kZXggNDQxYmI2ZDU5NzcuLjNhMmY2ZjgxMjg2IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRp
b25JdGVtLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbS5oDQpAQCAtMjksMTMgKzI5LDIwIEBADQogDQogQGNsYXNzIF9XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbjsNCiANCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0KIFdL
X0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQ0KIEBp
bnRlcmZhY2UgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gOiBOU09iamVjdA0KIA0KIC0gKGluc3Rh
bmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOw0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElk
ZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciB0b2tlbnM6KE5TQXJyYXk8X1dLVGV4dE1h
bmlwdWxhdGlvblRva2VuICo+ICopdG9rZW5zOw0KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElk
ZW50aWZpZXI6KG51bGxhYmxlIE5TU3RyaW5nICopaWRlbnRpZmllciB0b2tlbnM6KE5TQXJyYXk8
X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICo+ICopdG9rZW5zOw0KIA0KLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmlkZW50aWZpZXI7DQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmlkZW50aWZp
ZXI7DQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PF9XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbiAqPiAqdG9rZW5zOw0KIA0KKy0gKEJPT0wpaXNFcXVhbFRvVGV4
dE1hbmlwdWxhdGlvbkl0ZW06KG51bGxhYmxlIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopb3Ro
ZXJJdGVtIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTooQk9PTClpbmNsdWRpbmdDb250ZW50RXF1
YWxpdHk7DQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
cHJpdmFjeVByZXNlcnZpbmdEZXNjcmlwdGlvbjsNCisNCiBAZW5kDQorDQorTlNfQVNTVU1FX05P
Tk5VTExfRU5EDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1RleHRNYW5pcHVsYXRpb25JdGVtLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25JdGVtLm1tDQppbmRleCBiMzM4ODc2NTE3NC4uNTkz
ODVlZWRiN2UgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0NCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbQ0KQEAgLTI1LDYgKzI1LDcgQEAN
CiANCiAjaW1wb3J0ICJjb25maWcuaCINCiAjaW1wb3J0ICJfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bS5oIg0KKyNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIg0KIA0KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4NCiANCkBAIC01Myw0ICs1NCw0NyBAQA0KICAgICByZXR1cm4gX3Rv
a2Vucy5nZXQoKTsNCiB9DQogDQorLSAoQk9PTClpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRl
bTooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilvdGhlckl0ZW0gaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5OihCT09MKWluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eQ0KK3sNCisgICAgaWYgKCFvdGhl
ckl0ZW0pDQorICAgICAgICByZXR1cm4gTk87DQorDQorICAgIGlmICghW3NlbGYuaWRlbnRpZmll
ciBpc0VxdWFsVG9TdHJpbmc6b3RoZXJJdGVtLmlkZW50aWZpZXJdIHx8IHNlbGYudG9rZW5zLmNv
dW50ICE9IG90aGVySXRlbS50b2tlbnMuY291bnQpDQorICAgICAgICByZXR1cm4gTk87DQorDQor
ICAgIF9fYmxvY2sgQk9PTCB0b2tlbnNBcmVFcXVhbCA9IFlFUzsNCisgICAgTlNVSW50ZWdlciBj
b3VudCA9IHN0ZDo6bWluKHNlbGYudG9rZW5zLmNvdW50LCBvdGhlckl0ZW0udG9rZW5zLmNvdW50
KTsNCisgICAgW3NlbGYudG9rZW5zIGVudW1lcmF0ZU9iamVjdHNBdEluZGV4ZXM6W05TSW5kZXhT
ZXQgaW5kZXhTZXRXaXRoSW5kZXhlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY291bnQpXSBvcHRp
b25zOjAgdXNpbmdCbG9jazpeKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqdG9rZW4sIE5TVUlu
dGVnZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsNCisgICAgICAgIF9XS1RleHRNYW5pcHVsYXRpb25U
b2tlbiAqb3RoZXJUb2tlbiA9IG90aGVySXRlbS50b2tlbnNbaW5kZXhdOw0KKyAgICAgICAgaWYg
KCFbdG9rZW4gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOm90aGVyVG9rZW4gaW5jbHVk
aW5nQ29udGVudEVxdWFsaXR5OmluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eV0pIHsNCisgICAgICAg
ICAgICB0b2tlbnNBcmVFcXVhbCA9IE5POw0KKyAgICAgICAgICAgICpzdG9wID0gWUVTOw0KKyAg
ICAgICAgfQ0KKyAgICB9XTsNCisNCisgICAgcmV0dXJuIHRva2Vuc0FyZUVxdWFsOw0KK30NCisN
CistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uDQorew0KKyAgICByZXR1cm4gW3NlbGYgX2Rlc2Ny
aXB0aW9uUHJlc2VydmluZ1ByaXZhY3k6Tk9dOw0KK30NCisNCistIChOU1N0cmluZyAqKXByaXZh
Y3lQcmVzZXJ2aW5nRGVzY3JpcHRpb24NCit7DQorICAgIHJldHVybiBbc2VsZiBfZGVzY3JpcHRp
b25QcmVzZXJ2aW5nUHJpdmFjeTpZRVNdOw0KK30NCisNCistIChOU1N0cmluZyAqKV9kZXNjcmlw
dGlvblByZXNlcnZpbmdQcml2YWN5OihCT09MKXByZXNlcnZlUHJpdmFjeQ0KK3sNCisgICAgTlNN
dXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKnJlY3Vyc2l2ZURlc2NyaXB0aW9ucyA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07DQorICAgIFtzZWxmLnRva2VucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdC
bG9jazpeKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqdG9rZW4sIE5TVUludGVnZXIgaW5kZXgs
IEJPT0wqIHN0b3ApIHsNCisgICAgICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IHByZXNlcnZl
UHJpdmFjeSA/IHRva2VuLnByaXZhY3lQcmVzZXJ2aW5nRGVzY3JpcHRpb24gOiB0b2tlbi5kZXNj
cmlwdGlvbjsNCisgICAgICAgIFtyZWN1cnNpdmVEZXNjcmlwdGlvbnMgYWRkT2JqZWN0OmRlc2Ny
aXB0aW9uXTsNCisgICAgfV07DQorICAgIE5TU3RyaW5nICp0b2tlbkRlc2NyaXB0aW9uID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJbXG5cdCVAXG5dIiwgW3JlY3Vyc2l2ZURlc2NyaXB0
aW9ucyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsXG5cdCJdXTsNCisgICAgTlNTdHJpbmcg
KmRlc2NyaXB0aW9uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBpZGVu
dGlmaWVyID0gJUAgdG9rZW5zID0gJUA+Iiwgc2VsZi5jbGFzcywgc2VsZiwgc2VsZi5pZGVudGlm
aWVyLCB0b2tlbkRlc2NyaXB0aW9uXTsNCisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOw0KK30NCisN
CiBAZW5kDQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oDQppbmRleCA1MjEyOWQ0Zjk2MC4uYmU1MmFi
MTVmZDkgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VGV4dE1hbmlwdWxhdGlvblRva2VuLmgNCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaA0KQEAgLTI3LDExICsyNywxOCBAQA0K
IA0KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPg0KIA0KK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lODQorDQogV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpDQogQGludGVyZmFjZSBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gOiBOU09i
amVjdA0KIA0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqaWRlbnRpZmll
cjsNCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmNvbnRlbnQ7DQorQHBy
b3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqaWRlbnRpZmllcjsN
CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpjb250ZW50
Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNFeGNsdWRlZCkgQk9PTCBleGNsdWRl
ZDsNCiANCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpw
cml2YWN5UHJlc2VydmluZ0Rlc2NyaXB0aW9uOw0KKy0gKEJPT0wpaXNFcXVhbFRvVGV4dE1hbmlw
dWxhdGlvblRva2VuOihudWxsYWJsZSBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKilvdGhlclRv
a2VuIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTooQk9PTClpbmNsdWRpbmdDb250ZW50RXF1YWxp
dHk7DQorDQogQGVuZA0KKw0KK05TX0FTU1VNRV9OT05OVUxMX0VORA0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuLm1tDQppbmRleCAzZmNjNGU5MjA5YS4uOTkxOGU1YmRlMmMgMTAwNjQ0DQotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2Vu
Lm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlw
dWxhdGlvblRva2VuLm1tDQpAQCAtMjcsNCArMjcsNDggQEANCiAjaW1wb3J0ICJfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4uaCINCiANCiBAaW1wbGVtZW50YXRpb24gX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuDQorDQorc3RhdGljIEJPT0wgaXNFcXVhbE9yQm90aE5pbChpZCBhLCBpZCBiKQ0KK3sN
CisgICAgaWYgKGEgPT0gYikNCisgICAgICAgIHJldHVybiBZRVM7DQorDQorICAgIHJldHVybiBb
YSBpc0VxdWFsOmJdOw0KK30NCisNCistIChCT09MKWlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25U
b2tlbjooX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICopb3RoZXJUb2tlbiBpbmNsdWRpbmdDb250
ZW50RXF1YWxpdHk6KEJPT0wpaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5DQorew0KKyAgICBpZiAo
IW90aGVyVG9rZW4pDQorICAgICAgICByZXR1cm4gTk87DQorDQorICAgIEJPT0wgZXF1YWxJZGVu
dGlmaWVycyA9IGlzRXF1YWxPckJvdGhOaWwoc2VsZi5pZGVudGlmaWVyLCBvdGhlclRva2VuLmlk
ZW50aWZpZXIpOw0KKyAgICBCT09MIGVxdWFsRXhjbHVzaW9uID0gc2VsZi5pc0V4Y2x1ZGVkID09
IG90aGVyVG9rZW4uaXNFeGNsdWRlZDsNCisgICAgQk9PTCBlcXVhbENvbnRlbnQgPSAhaW5jbHVk
aW5nQ29udGVudEVxdWFsaXR5IHx8IGlzRXF1YWxPckJvdGhOaWwoc2VsZi5jb250ZW50LCBvdGhl
clRva2VuLmNvbnRlbnQpOw0KKw0KKyAgICByZXR1cm4gZXF1YWxJZGVudGlmaWVycyAmJiBlcXVh
bEV4Y2x1c2lvbiAmJiBlcXVhbENvbnRlbnQ7DQorfQ0KKw0KKy0gKE5TU3RyaW5nICopZGVzY3Jp
cHRpb24NCit7DQorICAgIHJldHVybiBbc2VsZiBfZGVzY3JpcHRpb25QcmVzZXJ2aW5nUHJpdmFj
eTpOT107DQorfQ0KKw0KKy0gKE5TU3RyaW5nICopcHJpdmFjeVByZXNlcnZpbmdEZXNjcmlwdGlv
bg0KK3sNCisgICAgcmV0dXJuIFtzZWxmIF9kZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5OllF
U107DQorfQ0KKw0KKy0gKE5TU3RyaW5nICopX2Rlc2NyaXB0aW9uUHJlc2VydmluZ1ByaXZhY3k6
KEJPT0wpcHJlc2VydmVQcml2YWN5DQorew0KKyAgICBOU011dGFibGVTdHJpbmcgKmRlc2NyaXB0
aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgaWRlbnRp
ZmllciA9ICVAOyBpc0V4Y2x1ZGVkID0gJWkiLCBzZWxmLmNsYXNzLCBzZWxmLCBzZWxmLmlkZW50
aWZpZXIsIHNlbGYuaXNFeGNsdWRlZF07DQorICAgIGlmIChwcmVzZXJ2ZVByaXZhY3kpDQorICAg
ICAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiOyBjb250ZW50IGxlbmd0aCA9ICVsdSIs
ICh1bnNpZ25lZCBsb25nKXNlbGYuY29udGVudC5sZW5ndGhdOw0KKyAgICBlbHNlDQorICAgICAg
ICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiOyBjb250ZW50ID0gJUAiLCBzZWxmLmNvbnRl
bnRdOw0KKw0KKyAgICBbZGVzY3JpcHRpb24gYXBwZW5kU3RyaW5nOkAiPiJdOw0KKw0KKyAgICBy
ZXR1cm4gW1tkZXNjcmlwdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07DQorfQ0KKw0KIEBlbmQNCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cNCmluZGV4IDdjYWNj
N2MxZjRhLi4xNGExZmY1ZmM1MCAxMDA2NDQNCi0tLSBhL1Rvb2xzL0NoYW5nZUxvZw0KKysrIGIv
VG9vbHMvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDIxIEBADQorMjAxOS0xMi0wMiAgTG91aWUgTGl2
b24tQmVtZWwgIDxsbGl2b25iZW1lbEBhcHBsZS5jb20+DQorDQorICAgICAgICBBZGQgaGVscGVy
IG1ldGhvZHMgZm9yIGRlc2NyaXB0aW9uIGFuZCBlcXVhbGl0eSB0byB0ZXh0IG1hbmlwdWxhdGlv
biBTUEkNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQ3NTgNCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQzODIwMD4NCisNCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLg0KKw0KKyAgICAgICAgQWRkIHRlc3RzIGZvciB0aGUg
bmV3IG1ldGhvZHMuIE1vc3QgYXJlIGVxdWFsaXR5IHRlc3RzIGZvciB2YXJpb3VzIHNpdHVhdGlv
bnMsIGFuZCBhcmUgbW92ZWQgb3ZlciBmcm9tIHRoZQ0KKyAgICAgICAgU2FmYXJpIHVuaXQgdGVz
dHMgSSBoYWQgZm9yIHRoZSBjYXRlZ29yeSBtZXRob2RzIHRoYXQgaGFkIHRoZSBzYW1lIHB1cnBv
c2UuDQorDQorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1h
bmlwdWxhdGlvbi5tbToNCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToNCisgICAgICAg
ICAgICAtIEFkZCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgY29udGVudCBpc24ndCBpbmNsdWRlZCBp
biB0aGUgcHJpdmFjeSBwcmVzZXJ2aW5nIGRlc2NyaXB0aW9uLCBidXQgdGhlIGlkZW50aWZpZXIg
aXMuDQorICAgICAgICAgICAgLSBBZGQgbWFueSB0ZXN0cyBlcXVhbGl0eSBmb3IgdmFyaW91cyBz
aXR1YXRpb25zLCB0ZXN0aW5nIGJvdGggd2l0aCBhbmQgd2l0aG91dCBjb250ZW50IGVxdWFsaXR5
Lg0KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbik6
DQorICAgICAgICAgICAgQWRkIGEgaGVscGVyIGZvciBjcmVhdGluZyBhIHRva2VuIGluIG9uZSBs
aW5lLg0KKw0KIDIwMTktMTEtMTkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+DQog
DQogICAgICAgICBSZW1vdmUgcnVuTnVsbGlzaEF3YXJlT3BlcmF0b3JzRW5hYmxlZA0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxh
dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlw
dWxhdGlvbi5tbQ0KaW5kZXggYzYyY2UwNjY1ZjYuLmY4N2YxZTVhNTI2IDEwMDY0NA0KLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1t
DQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVs
YXRpb24ubW0NCkBAIC00MjQsNSArNDI0LDQxMiBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVzaW9uSXNWaW9sYXRlZCkNCiAgICAg
RVhQRUNUX1dLX1NUUkVRKCI8cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+PC9wPiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJd
KTsNCiB9DQogDQorLy8gTUFSSzogLSBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gVGVzdHMNCisN
CitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlblByaXZhY3lQcmVz
ZXJ2aW5nRGVzY3JpcHRpb24pDQorew0KKyAgICBhdXRvIHRva2VuID0gYWRvcHROUyhbW19XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW4gc2V0SWRlbnRp
ZmllcjpAImZvb19pc190aGVfaWRlbnRpZmllciJdOw0KKyAgICBbdG9rZW4gc2V0Q29udGVudDpA
ImJhcl9pc190aGVfY29udGVudCJdOw0KKw0KKyAgICBOU1N0cmluZyAqZGVidWdEZXNjcmlwdGlv
biA9IHRva2VuLmdldCgpLmRlc2NyaXB0aW9uOw0KKyAgICBFWFBFQ1RfVFJVRShbZGVidWdEZXNj
cmlwdGlvbiBjb250YWluc1N0cmluZzpAImZvb19pc190aGVfaWRlbnRpZmllciJdKTsNCisgICAg
RVhQRUNUX1RSVUUoW2RlYnVnRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJiYXJfaXNfdGhl
X2NvbnRlbnQiXSk7DQorDQorICAgIE5TU3RyaW5nICpwcml2YWN5UHJlc2VydmluZ0Rlc2NyaXB0
aW9uID0gdG9rZW4uZ2V0KCkucHJpdmFjeVByZXNlcnZpbmdEZXNjcmlwdGlvbjsNCisgICAgRVhQ
RUNUX1RSVUUoW3ByaXZhY3lQcmVzZXJ2aW5nRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJm
b29faXNfdGhlX2lkZW50aWZpZXIiXSk7DQorICAgIEVYUEVDVF9GQUxTRShbcHJpdmFjeVByZXNl
cnZpbmdEZXNjcmlwdGlvbiBjb250YWluc1N0cmluZzpAImJhcl9pc190aGVfY29udGVudCJdKTsN
Cit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5Ob3RF
cXVhbFRvTmlsKQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpA
IkEiXTsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiQSJdOw0KKw0KKyAgICBFWFBFQ1RfRkFM
U0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46bmlsIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRv
VGV4dE1hbmlwdWxhdGlvblRva2VuOm5pbCBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsN
CisNCisgICAgW3Rva2VuQSBzZXRJZGVudGlmaWVyOm5pbF07DQorICAgIFt0b2tlbkEgc2V0Q29u
dGVudDpuaWxdOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1
bGF0aW9uVG9rZW46bmlsIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQ
RUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOm5pbCBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9u
LCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5FcXVhbGl0eVdpdGhFcXVhbElkZW50aWZpZXJzKQ0KK3sN
CisgICAgYXV0byB0b2tlbjEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFs
bG9jXSBpbml0XSk7DQorICAgIFt0b2tlbjEgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisgICAgYXV0
byB0b2tlbjIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0
XSk7DQorICAgIFt0b2tlbjIgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisNCisgICAgRVhQRUNUX1RS
VUUoW3Rva2VuMSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdldCgpIGlu
Y2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuMSBp
c0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdldCgpIGluY2x1ZGluZ0NvbnRl
bnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICAvLyBTYW1lIGlkZW50aWZpZXJzLCBkaWZmZXJlbnQg
Y29udGVudC4NCisgICAgW3Rva2VuMSBzZXRDb250ZW50OkAiMSJdOw0KKyAgICBbdG9rZW4yIHNl
dENvbnRlbnQ6QCIyIl07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW4xIGlzRXF1YWxUb1RleHRN
YW5pcHVsYXRpb25Ub2tlbjp0b2tlbjIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllF
U10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW4xIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25U
b2tlbjp0b2tlbjIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAg
IC8vIFNhbWUgaWRlbnRpZmllcnMsIGRpZmZlcmVudCBleGNsdXNpb24uDQorICAgIFt0b2tlbjEg
c2V0RXhjbHVkZWQ6Tk9dOw0KKyAgICBbdG9rZW4yIHNldEV4Y2x1ZGVkOllFU107DQorICAgIFt0
b2tlbjEgc2V0Q29udGVudDpuaWxdOw0KKyAgICBbdG9rZW4yIHNldENvbnRlbnQ6bmlsXTsNCisg
ICAgRVhQRUNUX0ZBTFNFKFt0b2tlbjEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRv
a2VuMi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9G
QUxTRShbdG9rZW4xIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbjIuZ2V0KCkg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIC8vIFNhbWUgaWRlbnRpZmll
cnMsIGRpZmZlcmVudCBleGNsdXNpb24gYW5kIGRpZmZlcmVudCBjb250ZW50Lg0KKyAgICBbdG9r
ZW4xIHNldENvbnRlbnQ6QCIxIl07DQorICAgIFt0b2tlbjIgc2V0Q29udGVudDpAIjIiXTsNCisg
ICAgRVhQRUNUX0ZBTFNFKFt0b2tlbjEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRv
a2VuMi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9G
QUxTRShbdG9rZW4xIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbjIuZ2V0KCkg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxh
dGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuRXF1YWxpdHlXaXRoRGlmZmVyZW50SWRlbnRpZmll
cnMpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9u
VG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuQSBzZXRJZGVudGlmaWVyOkAiQSJdOw0K
KyAgICBhdXRvIHRva2VuQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxs
b2NdIGluaXRdKTsNCisgICAgW3Rva2VuQiBzZXRJZGVudGlmaWVyOkAiQiJdOw0KKw0KKyAgICBF
WFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5C
LmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRGlmZmVyZW50IGlkZW50aWZp
ZXJzLCBzYW1lIGNvbnRlbnQuDQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpAImNvbnRlbnQiXTsN
CisgICAgW3Rva2VuQiBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRGlmZmVyZW50IGlkZW50aWZpZXJzLCBzYW1lIGV4
Y2x1c2lvbi4NCisgICAgW3Rva2VuQSBzZXRDb250ZW50Om5pbF07DQorICAgIFt0b2tlbkIgc2V0
Q29udGVudDpuaWxdOw0KKyAgICBbdG9rZW5BIHNldEV4Y2x1ZGVkOllFU107DQorICAgIFt0b2tl
bkIgc2V0RXhjbHVkZWQ6WUVTXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRv
VGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxp
dHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVs
YXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQor
DQorICAgIC8vIERpZmZlcmVudCBpZGVudGlmaWVycywgc2FtZSBjb250ZW50IGFuZCBzYW1lIGV4
Y2x1c2lvbi4NCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBbdG9r
ZW5CIHNldENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVu
dEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpO
T10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tl
bkVxdWFsaXR5V2l0aE5pbElkZW50aWZpZXJzKQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9w
dE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIEVYUEVD
VF9OVUxMKHRva2VuQS5nZXQoKS5pZGVudGlmaWVyKTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9w
dE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tl
bkIgc2V0SWRlbnRpZmllcjpAIkIiXTsNCisgICAgYXV0byB0b2tlbkMgPSBhZG9wdE5TKFtbX1dL
VGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIEVYUEVDVF9OVUxMKHRv
a2VuQy5nZXQoKS5pZGVudGlmaWVyKTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRN
YW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5P
XSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRv
a2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVY
UEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5n
ZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRXF1YWwgY29u
dGVudC4NCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBbdG9rZW5C
IHNldENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIFt0b2tlbkMgc2V0Q29udGVudDpAImNvbnRl
bnQiXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlv
blRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAg
IEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tl
bkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9UUlVF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRGlmZmVyZW50IGNvbnRlbnQuDQorICAgIFt0b2tl
bkEgc2V0Q29udGVudDpAImNvbnRlbnRBIl07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAImNv
bnRlbnRCIl07DQorICAgIFt0b2tlbkMgc2V0Q29udGVudDpAImNvbnRlbnRDIl07DQorICAgIEVY
UEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIu
Z2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0Vx
dWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRF
cXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10p
Ow0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbkVx
dWFsaXR5V2l0aEVtcHR5SWRlbnRpZmllcnMpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0
TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2Vu
QSBzZXRJZGVudGlmaWVyOkAiIl07DQorICAgIGF1dG8gdG9rZW5CID0gYWRvcHROUyhbW19XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5CIHNldElkZW50
aWZpZXI6QCJCIl07DQorICAgIGF1dG8gdG9rZW5DID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVs
YXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5DIHNldElkZW50aWZpZXI6QCIi
XTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlv
blRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAg
IEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tl
bkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9UUlVF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRXF1YWwgY29udGVudC4NCisgICAgW3Rva2VuQSBz
ZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCJjb250ZW50
Il07DQorICAgIFt0b2tlbkMgc2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAgRVhQRUNUX0ZB
TFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBp
bmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5B
IGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29u
dGVudEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4
dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6
WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlv
blRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisg
ICAgLy8gRGlmZmVyZW50IGNvbnRlbnQuDQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpAImNvbnRl
bnRBIl07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAImNvbnRlbnRCIl07DQorICAgIFt0b2tl
bkMgc2V0Q29udGVudDpAImNvbnRlbnRDIl07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVu
dEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpO
T10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9u
VG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAg
RVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5D
LmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRN
YW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbldpdGhOaWxDb250ZW50KQ0KK3sNCisg
ICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9j
XSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisgICAgYXV0byB0
b2tlbkIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7
DQorICAgIFt0b2tlbkIgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisNCisgICAgRVhQRUNUX05VTEwo
dG9rZW5BLmdldCgpLmNvbnRlbnQpOw0KKyAgICBFWFBFQ1RfTlVMTCh0b2tlbkIuZ2V0KCkuY29u
dGVudCk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlv
blRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAg
IEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2Vu
Qi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgW3Rva2VuQiBz
ZXRDb250ZW50OkAiIl07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRN
YW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllF
U10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25U
b2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAg
IFt0b2tlbkIgc2V0Q29udGVudDpAIkIiXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1h
bmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9d
KTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5X
aXRoRW1wdHlDb250ZW50KQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRp
ZmllcjpAIkEiXTsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiIl07DQorICAgIGF1dG8gdG9r
ZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0K
KyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIFt0b2tlbkIgc2V0Q29udGVu
dDpAIiJdOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVs
YXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0K
KyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0
b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIFt0b2tl
bkIgc2V0Q29udGVudDpuaWxdOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0K
KyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCJCIl07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5B
IGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29u
dGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5
Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRv
a2VuV2l0aElkZW50aWNhbENvbnRlbnQpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0TlMo
W1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuQSBz
ZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW5BIHNldENvbnRlbnQ6QCJjb250ZW50Il07
DQorICAgIGF1dG8gdG9rZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBh
bGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIFt0
b2tlbkIgc2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rva2Vu
QSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25U
b2tlbldpdGhQb2ludGVyRXF1YWxDb250ZW50KQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9w
dE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tl
bkEgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9wdE5TKFtbX1dL
VGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkIgc2V0SWRl
bnRpZmllcjpAIkEiXTsNCisNCisgICAgTlNTdHJpbmcgKmNvbnRlbnRTdHJpbmcgPSBAImNvbnRl
bnQiOw0KKyAgICBbdG9rZW5BIHNldENvbnRlbnQ6Y29udGVudFN0cmluZ107DQorICAgIFt0b2tl
bkIgc2V0Q29udGVudDpjb250ZW50U3RyaW5nXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rva2Vu
QSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25U
b2tlbldpdGhUcmFpbGluZ1NwYWNlKQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtb
X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0
SWRlbnRpZmllcjpAIkEiXTsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0K
KyAgICBhdXRvIHRva2VuQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxs
b2NdIGluaXRdKTsNCisgICAgW3Rva2VuQiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9r
ZW5CIHNldENvbnRlbnQ6QCJjb250ZW50ICJdOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2Vu
QSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpOT10pOw0KK30NCisNCisvLyBNQVJLOiAtIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtIFRlc3Rz
DQorDQorc3RhdGljIFJldGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4+IGNyZWF0ZVRl
eHRNYW5pcHVsYXRpb25Ub2tlbihOU1N0cmluZyAqaWRlbnRpZmllciwgQk9PTCBleGNsdWRlZCwg
TlNTdHJpbmcgKmNvbnRlbnQpDQorew0KKyAgICBhdXRvIHRva2VuID0gYWRvcHROUyhbW19XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW4gc2V0SWRlbnRp
ZmllcjppZGVudGlmaWVyXTsNCisgICAgW3Rva2VuIHNldEV4Y2x1ZGVkOmV4Y2x1ZGVkXTsNCisg
ICAgW3Rva2VuIHNldENvbnRlbnQ6Y29udGVudF07DQorICAgIHJldHVybiB0b2tlbjsNCit9DQor
DQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbVByaXZhY3lQcmVz
ZXJ2aW5nRGVzY3JpcHRpb24pDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGNyZWF0ZVRleHRNYW5p
cHVsYXRpb25Ub2tlbihAInB1YmxpY19pZGVudGlmaWVyX0EiLCBOTywgQCJwcml2YXRlX2NvbnRl
bnRfQSIpOw0KKyAgICBhdXRvIHRva2VuQiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihA
InB1YmxpY19pZGVudGlmaWVyX0IiLCBOTywgQCJwcml2YXRlX2NvbnRlbnRfQiIpOw0KKyAgICBh
dXRvIGl0ZW0gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRX
aXRoSWRlbnRpZmllcjpAInB1YmxpY19pdGVtX2lkZW50aWZpZXIiIHRva2VuczpAWyB0b2tlbkEu
Z2V0KCksIHRva2VuQi5nZXQoKSBdXSk7DQorDQorICAgIE5TU3RyaW5nICpkZWJ1Z0Rlc2NyaXB0
aW9uID0gaXRlbS5nZXQoKS5kZXNjcmlwdGlvbjsNCisgICAgRVhQRUNUX1RSVUUoW2RlYnVnRGVz
Y3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJwdWJsaWNfaWRlbnRpZmllcl9BIl0pOw0KKyAgICBF
WFBFQ1RfVFJVRShbZGVidWdEZXNjcmlwdGlvbiBjb250YWluc1N0cmluZzpAInB1YmxpY19pZGVu
dGlmaWVyX0IiXSk7DQorICAgIEVYUEVDVF9UUlVFKFtkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnRhaW5z
U3RyaW5nOkAicHJpdmF0ZV9jb250ZW50X0EiXSk7DQorICAgIEVYUEVDVF9UUlVFKFtkZWJ1Z0Rl
c2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHJpdmF0ZV9jb250ZW50X0IiXSk7DQorICAgIEVY
UEVDVF9UUlVFKFtkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHVibGljX2l0ZW1f
aWRlbnRpZmllciJdKTsNCisNCisgICAgTlNTdHJpbmcgKnByaXZhY3lQcmVzZXJ2aW5nRGVzY3Jp
cHRpb24gPSBpdGVtLmdldCgpLnByaXZhY3lQcmVzZXJ2aW5nRGVzY3JpcHRpb247DQorICAgIEVY
UEVDVF9UUlVFKFtwcml2YWN5UHJlc2VydmluZ0Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAi
cHVibGljX2lkZW50aWZpZXJfQSJdKTsNCisgICAgRVhQRUNUX1RSVUUoW3ByaXZhY3lQcmVzZXJ2
aW5nRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJwdWJsaWNfaWRlbnRpZmllcl9CIl0pOw0K
KyAgICBFWFBFQ1RfRkFMU0UoW3ByaXZhY3lQcmVzZXJ2aW5nRGVzY3JpcHRpb24gY29udGFpbnNT
dHJpbmc6QCJwcml2YXRlX2NvbnRlbnRfQSJdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFtwcml2YWN5
UHJlc2VydmluZ0Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHJpdmF0ZV9jb250ZW50X0Ii
XSk7DQorICAgIEVYUEVDVF9UUlVFKFtwcml2YWN5UHJlc2VydmluZ0Rlc2NyaXB0aW9uIGNvbnRh
aW5zU3RyaW5nOkAicHVibGljX2l0ZW1faWRlbnRpZmllciJdKTsNCit9DQorDQorVEVTVChUZXh0
TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5VG9OaWxJdGVtKQ0KK3sN
CisgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9j
XSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgXV0pOw0KKw0KKyAgICBFWFBFQ1Rf
RkFMU0UoW2l0ZW0gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06bmlsIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtIGlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25JdGVtOm5pbCBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9
DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5
VG9TZWxmKQ0KK3sNCisgICAgYXV0byB0b2tlbiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tl
bihAIkEiLCBOTywgQCJ0b2tlbiIpOw0KKyAgICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkIiIHRva2VuczpA
WyB0b2tlbi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVDVF9UUlVFKFtpdGVtIGlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25JdGVtOml0ZW0uZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllF
U10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRl
bTppdGVtLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNU
KFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25JdGVtQmFzaWNFcXVhbGl0eSkNCit7
DQorICAgIGF1dG8gdG9rZW4xID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5P
LCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25U
b2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tf
V0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9r
ZW5zOkBbIHRva2VuMS5nZXQoKSBdXSk7DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2Vu
czpAWyB0b2tlbjIuZ2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVh
bFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFs
aXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxh
dGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0K
Kw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1CYXNpY0VxdWFs
aXR5V2l0aE11bHRpcGxlVG9rZW5zKQ0KK3sNCisgICAgYXV0byB0b2tlbkExID0gY3JlYXRlVGV4
dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2Vu
QTIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7DQor
ICAgIGF1dG8gdG9rZW5CMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEiLCBOTywg
QCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbkIyID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRv
a2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKw0KKyAgICBhdXRvIGl0ZW1BID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0
b2tlbnM6QFsgdG9rZW5BMS5nZXQoKSwgdG9rZW5BMi5nZXQoKSBdXSk7DQorICAgIGF1dG8gaXRl
bUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRl
bnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkIxLmdldCgpLCB0b2tlbkIyLmdldCgpIF1dKTsN
CisNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVt
Oml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNU
X1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGlu
Y2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRp
b24sIFRleHRNYW5pcHVsYXRpb25JdGVtRXF1YWxpdHlTaW1pbGFyVG9rZW5zV2l0aERpZmZlcmVu
dENvbnRlbnQpDQorew0KKyAgICBhdXRvIHRva2VuMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25U
b2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbjIgPSBjcmVhdGVUZXh0
TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4yIik7DQorICAgIGF1dG8gaXRlbUEg
PSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRp
ZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbjEuZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1CID0g
YWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZp
ZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW4yLmdldCgpIF1dKTsNCisNCisgICAgRVhQRUNUX0ZBTFNF
KFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRp
bmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFs
VG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxp
dHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9u
SXRlbUVxdWFsaXR5V2l0aE91dE9mT3JkZXJUb2tlbnMpDQorew0KKyAgICBhdXRvIHRva2VuQTEg
PSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQorICAg
IGF1dG8gdG9rZW5BMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjIiLCBOTywgQCJ0
b2tlbjIiKTsNCisgICAgYXV0byB0b2tlbkIxID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2Vu
KEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuQjIgPSBjcmVhdGVUZXh0TWFu
aXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7DQorDQorICAgIGF1dG8gaXRlbUEg
PSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRp
ZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkExLmdldCgpLCB0b2tlbkEyLmdldCgpIF1dKTsNCisg
ICAgYXV0byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10g
aW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQjIuZ2V0KCksIHRva2VuQjEu
Z2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5p
cHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsN
CisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTpp
dGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChU
ZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5V2l0aFBvaW50ZXJF
cXVhbFRva2VucykNCit7DQorICAgIGF1dG8gdG9rZW4xID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlv
blRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuMiA9IGNyZWF0ZVRl
eHRNYW5pcHVsYXRpb25Ub2tlbihAIjIiLCBOTywgQCJ0b2tlbjIiKTsNCisNCisgICAgYXV0byBp
dGVtQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJ
ZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuMS5nZXQoKSwgdG9rZW4yLmdldCgpIF1dKTsN
CisgICAgYXV0byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuMS5nZXQoKSwgdG9rZW4y
LmdldCgpIF1dKTsNCisNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5p
cHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsN
CisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0
ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRl
eHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25JdGVtRXF1YWxpdHlXaXRoUG9pbnRlckVx
dWFsVG9rZW5BcnJheXMpDQorew0KKyAgICBhdXRvIHRva2VuMSA9IGNyZWF0ZVRleHRNYW5pcHVs
YXRpb25Ub2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbjIgPSBjcmVh
dGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7DQorICAgIE5TQXJy
YXk8X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICo+ICp0b2tlbnMgPSBAWyB0b2tlbjEuZ2V0KCks
IHRva2VuMi5nZXQoKSBdOw0KKw0KKyAgICBhdXRvIGl0ZW1BID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6dG9r
ZW5zXSk7DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2Vuczp0b2tlbnNdKTsNCisNCisg
ICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1C
LmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUo
W2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRl
eHRNYW5pcHVsYXRpb25JdGVtRXF1YWxpdHlXaXRoTWlzbWF0Y2hlZFRva2VuQ291bnRzKQ0KK3sN
CisgICAgYXV0byB0b2tlbkExID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5P
LCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuQTIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9u
VG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7DQorICAgIGF1dG8gdG9rZW5BMyA9IGNyZWF0ZVRl
eHRNYW5pcHVsYXRpb25Ub2tlbihAIjMiLCBOTywgQCJ0b2tlbjMiKTsNCisgICAgYXV0byB0b2tl
bkIxID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0K
KyAgICBhdXRvIHRva2VuQjIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8s
IEAidG9rZW4yIik7DQorDQorICAgIGF1dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tl
bkExLmdldCgpLCB0b2tlbkEyLmdldCgpLCB0b2tlbkEzLmdldCgpIF1dKTsNCisgICAgYXV0byBp
dGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJ
ZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQjEuZ2V0KCksIHRva2VuQjIuZ2V0KCkgXV0p
Ow0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25J
dGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQ
RUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFtp
dGVtQiBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQS5nZXQoKSBpbmNsdWRpbmdD
b250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbaXRlbUIgaXNFcXVhbFRv
VGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUEuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5
Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcXVhbGl0eVdpdGhEaWZmZXJlbnRUb2tlbklkZW50aWZpZXJzKQ0KK3sNCisgICAgYXV0byB0
b2tlbkEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCJBIiwgTk8sIEAidG9rZW4iKTsN
CisgICAgYXV0byB0b2tlbkIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCJCIiwgTk8s
IEAidG9rZW4iKTsNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQS5n
ZXQoKSBdXSk7DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkIuZ2V0
KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVs
YXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisg
ICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVt
Qi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0
TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5V2l0aERpZmZlcmVudFRv
a2VuRXhjbHVzaW9ucykNCit7DQorICAgIGF1dG8gdG9rZW5BID0gY3JlYXRlVGV4dE1hbmlwdWxh
dGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuIik7DQorICAgIGF1dG8gdG9rZW5CID0gY3JlYXRl
VGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIFlFUywgQCJ0b2tlbiIpOw0KKyAgICBhdXRvIGl0
ZW1BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElk
ZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5BLmdldCgpIF1dKTsNCisgICAgYXV0byBpdGVt
QiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVu
dGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVDVF9G
QUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5j
bHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRF
cXVhbGl0eTpOT10pOw0KK30NCisNCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJDQogDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384650</attachid>
            <date>2019-12-02 13:19:18 -0800</date>
            <delta_ts>2019-12-02 13:43:32 -0800</delta_ts>
            <desc>57438200-part-2.patch</desc>
            <filename>file_204758.txt</filename>
            <type>text/plain</type>
            <size>38679</size>
            <attacher name="Louie Livon-Bemel">llivonbemel</attacher>
            
              <data encoding="base64">Y29tbWl0IDZkOWEwYTY2Y2I5ZmNhZjllMTBmZDAwMWFhZWQyYzM2OWI2NGM0YzANCkF1dGhvcjog
TG91aWUgTGl2b24tQmVtZWwgPGxsaXZvbmJlbWVsQGFwcGxlLmNvbT4NCkRhdGU6ICAgTW9uIERl
YyAyIDEwOjQ3OjM0IDIwMTkgLTA4MDANCg0KICAgIEFkZCBoZWxwZXIgbWV0aG9kcyBmb3IgZGVz
Y3JpcHRpb24gYW5kIGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQSQ0KICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3NTgNCiAgICA8cmRhcjovL3By
b2JsZW0vNTc0MzgyMDA+DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQppbmRleCA5ZjZlZmRlNTZjYy4uNTE4MjRlMjA3YjIg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNjEgQEANCisyMDE5LTEyLTAyICBMb3VpZSBMaXZvbi1C
ZW1lbCAgPGxsaXZvbmJlbWVsQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBoZWxwZXIgbWV0
aG9kcyBmb3IgZGVzY3JpcHRpb24gYW5kIGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQ
SQ0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDc1
OA0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDM4MjAwPg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgV2Vuc29uIEhzaWVoLg0KKw0KKyAgICAgICAgSSBvcmlnaW5hbGx5IGFkZGVkIHNvbWUg
Y2F0ZWdvcnkgbWV0aG9kcyB0byBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbmQgX1dLVGV4dE1h
bmlwdWxhdGlvblRva2VuIHdpdGhpbiBTYWZhcmkNCisgICAgICAgIHRvIG1ha2Ugd29ya2luZyB3
aXRoIHRoZXNlIGNsYXNzZXMgZWFzaWVyLiBIb3dldmVyIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8g
anVzdCBtb3ZlIHRoZXNlIG1ldGhvZHMgaW50bw0KKyAgICAgICAgdGhlIG1haW4gY2xhc3MuIE9u
ZSBtZXRob2QgaXMgZm9yIGNoZWNraW5nIGlmIHR3byBpbnN0YW5jZXMgYXJlIGVxdWFsIChpbmNs
dWRpbmcgaWRlbnRpZmllcnMpIGFuZCBvcHRpb25hbGx5DQorICAgICAgICBjaGVja2luZyBpZiB0
aGUgY29udGVudCBpdHNlbGYgaXMgZXF1YWwuIFRoZSBvdGhlciBtZXRob2RzIGFyZSBmb3IgZGVi
dWcgZGVzY3JpcHRpb25zIGZvciBsbGRiLCBhbmQgYQ0KKyAgICAgICAgbWV0aG9kIHRvIGdldCBh
IGRlc2NyaXB0aW9uIHRoYXQgcHJlc2VydmVzIHByaXZhY3k7IHdoZW4gbG9nZ2luZyB0aGUgaW5z
dGFuY2UsIHRoZSBjb250ZW50IG9mIHRoZSB3ZWJwYWdlDQorICAgICAgICBzaG91bGQgYmUgcmVk
YWN0ZWQuDQorDQorICAgICAgICBUZXN0czogVGVzdHMgYXJlIGFkZGVkIGFzIEFQSSB0ZXN0cy4N
CisNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bS5oOg0KKyAgICAgICAgICAgIC0gQXNzdW1lIGV2ZXJ5dGhpbmcgaXMgbm9uLW51bGwgdW5sZXNz
IG90aGVyd2lzZSBzcGVjaWZpZWQuDQorICAgICAgICAgICAgLSBBbGxvdyB0aGUgaWRlbnRpZmll
ciB0byBiZSBuaWwsIGJ1dCBub3QgdGhlIGFycmF5IG9mIHRva2Vucy4NCisgICAgICAgICAgICAt
IEFkZCBhIG1ldGhvZCB0byBjaGVjayB0aGUgZXF1YWxpdHkgdG8gYW5vdGhlciBpdGVtLCBvcHRp
b25hbGx5IGluY2x1ZGluZyBhIGNoZWNrIGZvciB0aGUgY29udGVudCBvZiBlYWNoDQorICAgICAg
ICAgICAgICB0b2tlbiBiZWluZyBlcXVhbC4NCisgICAgICAgICAgICAtIEFkZCBhIC1kZWJ1Z0Rl
c2NyaXB0aW9uIG1ldGhvZCB0aGF0IGluY2x1ZGVzIHRoZSBjb250ZW50IG9mIHRva2VucyBmb3Ig
dXNlIGluIGxsZGIuIFRoaXMgTlNPYmplY3QNCisgICAgICAgICAgICAgIGRlY2xhcmF0aW9uIGlz
IG1hcmtlZCBvcHRpb25hbCwgc28gcmVkZWNsYXJlIGl0IGhlcmUuDQorICAgICAgICAgICAgLSBO
byBuZWVkIHRvIGFkZCBhIC1kZXNjcmlwdGlvbiBkZWNsYXJhdGlvbiBzaW5jZSBpdCBleGlzdHMg
b24gTlNPYmplY3QgYWxyZWFkeS4NCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbS5tbToNCisgICAgICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25J
dGVtIGlzRXF1YWw6XSk6DQorICAgICAgICAgICAgVGhlIHN0YW5kYXJkIE5TT2JqZWN0IGVxdWFs
aXR5IGNoZWNrIHNob3VsZCBjYWxsIG91ciBtZXRob2Qgd2l0aCBlcXVhbCBjb250ZW50Lg0KKyAg
ICAgICAgKC1bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlv
bkl0ZW06aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ol0pOg0KKyAgICAgICAgICAgIC0gSWYgdGhl
IG90aGVyIGl0ZW0gaXMgbmlsLCB0aGUgaWRlbnRpZmllcnMgYXJlbid0IGVxdWFsIG9yIHRoZSBu
dW1iZXIgb2YgdG9rZW5zIGFyZSBtaXNtYXRjaGVkLCB0aGVzZQ0KKyAgICAgICAgICAgICAgaXRl
bXMgYXJlbid0IGVxdWFsLg0KKyAgICAgICAgICAgIC0gSnVzdCB0byBiZSBzYWZlLCBvbmx5IGl0
ZXJhdGUgdGhlIHNtYWxsZXIgb2YgdGhlIHRva2VuIGFycmF5cyBzbyB3ZSBkb24ndCBjcmFzaC4N
CisgICAgICAgICAgICAtIENoZWNrIGlmIGVhY2ggdG9rZW4gaXMgZXF1YWwsIHBhc3NpbmcgYWxv
bmcgdGhlIGBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHlgIHBhcmFtZXRlci4NCisgICAgICAgICgt
W19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGRlc2NyaXB0aW9uXSk6DQorICAgICAgICAgICAgVGhl
IGdlbmVyYWwgZGVzY3JpcHRpb24gZm9yIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgd2VicGFnZSBj
b250ZW50Lg0KKyAgICAgICAgKC1bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gZGVidWdEZXNjcmlw
dGlvbl0pOg0KKyAgICAgICAgICAgIEluY2x1ZGUgdGhlIHdlYnBhZ2UgY29udGVudCwgc2luY2Ug
dGhpcyBpcyBmb3IgbGxkYi4NCisgICAgICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIF9k
ZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5Ol0pOg0KKyAgICAgICAgICAgIEluY2x1ZGUgdGhl
IHN0YW5kYXJkIGRlc2NyaXB0aW9uIGZvcm1hdCwgYW5kIGVhY2ggdG9rZW4gb24gaXRzIG93biBs
aW5lLiBJZiB3ZSdyZSBpbmNsdWRpbmcgdGhlIGNvbnRlbnQNCisgICAgICAgICAgICB0aGVuIHVz
ZSBgdG9rZW4uZGVidWdEZXNjcmlwdGlvbmAuDQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmg6DQorICAgICAgICAgICAgLSBBbHNvIGFzc3Vt
ZSBldmVyeXRoaW5nIGlzIG5vbi1udWxsLg0KKyAgICAgICAgICAgIC0gSWRlbnRpZmllciBhbmQg
Q29udGVudCBjYW4gYmUgbmlsLg0KKyAgICAgICAgICAgIC0gRGVjbGFyZSBhIC1kZWJ1Z0Rlc2Ny
aXB0aW9uIG1ldGhvZC4NCisgICAgICAgICAgICAtIERlY2xhcmUgYSBtZXRob2QgdG8gY2hlY2sg
ZXF1YWxpdHksIHdpdGggb3Igd2l0aG91dCB0aGUgY29udGVudC4NCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4ubW06DQorICAgICAgICAoaXNF
cXVhbE9yQm90aE5pbCk6DQorICAgICAgICAgICAgSGVscGVyIHRoYXQgY2hlY2tzIGVxdWFsaXR5
IGJ1dCBjb25zaWRlcnMgdHdvIG5pbCB2YWx1ZXMgdG8gYmUgZXF1YWwgYXMgd2VsbC4NCisgICAg
ICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBpc0VxdWFsOl0pOg0KKyAgICAgICAgICAg
IFRoZSBzdGFuZGFyZCBOU09iamVjdCBlcXVhbGl0eSBjaGVjayBzaG91bGQgY2FsbCBvdXIgbWV0
aG9kIHdpdGggZXF1YWwgY29udGVudC4NCisgICAgICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25U
b2tlbiBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46aW5jbHVkaW5nQ29udGVudEVxdWFs
aXR5Ol0pOg0KKyAgICAgICAgICAgIENoZWNrIHRoYXQgdGhlIGV4Y2x1c2lvbnMgYXJlIGVxdWFs
LCB0aGUgaWRlbnRpZmllcnMgYXJlIGVxdWFsIChjb25zaWRlcmluZyB0d28gbmlscyB0byBiZSBl
cXVhbCksIGFuZCB0aGUNCisgICAgICAgICAgICBjb250ZW50IGlmIG5lY2Vzc2FyeS4NCisgICAg
ICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBkZXNjcmlwdGlvbl0pOg0KKyAgICAgICAg
KC1bX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGRlYnVnRGVzY3JpcHRpb25dKToNCisgICAgICAg
ICgtW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBfZGVzY3JpcHRpb25QcmVzZXJ2aW5nUHJpdmFj
eTpdKToNCisgICAgICAgICAgICBJZiB3ZSdyZSBwcmVzZXJ2aW5nIHByaXZhY3ksIGxvZyB0aGUg
Y29udGVudCBsZW5ndGggcmF0aGVyIHRoYW4gdGhlIGNvbnRlbnQgc3RyaW5nIGl0c2VsZi4NCisN
CiAyMDE5LTExLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+DQogDQogICAgICAg
ICBVbnJldmlld2VkLCBmaXggd2Via2l0cHkgZmFpbHVyZXMgYWZ0ZXIgcjI1MjY1NS4NCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFu
aXB1bGF0aW9uSXRlbS5oDQppbmRleCA0NDFiYjZkNTk3Ny4uNTllNjVlNTJhMjUgMTAwNjQ0DQot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW0uaA0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRN
YW5pcHVsYXRpb25JdGVtLmgNCkBAIC0yOSwxMyArMjksMjAgQEANCiANCiBAY2xhc3MgX1dLVGV4
dE1hbmlwdWxhdGlvblRva2VuOw0KIA0KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lODQorDQogV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpDQogQGlu
dGVyZmFjZSBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSA6IE5TT2JqZWN0DQogDQogLSAoaW5zdGFu
Y2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7DQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRl
bnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIHRva2VuczooTlNBcnJheTxfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gKj4gKil0b2tlbnM7DQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRl
bnRpZmllcjoobnVsbGFibGUgTlNTdHJpbmcgKilpZGVudGlmaWVyIHRva2VuczooTlNBcnJheTxf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKj4gKil0b2tlbnM7DQogDQotQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqaWRlbnRpZmllcjsNCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqaWRlbnRpZmll
cjsNCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TQXJyYXk8X1dLVGV4
dE1hbmlwdWxhdGlvblRva2VuICo+ICp0b2tlbnM7DQogDQorLSAoQk9PTClpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uSXRlbToobnVsbGFibGUgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilvdGhl
ckl0ZW0gaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OihCT09MKWluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTsNCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpk
ZWJ1Z0Rlc2NyaXB0aW9uOw0KKw0KIEBlbmQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9FTkQNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW0ubW0NCmluZGV4IGIzMzg4NzY1MTc0Li42YjVkZmE5MTI0YiAxMDA2
NDQNCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1
bGF0aW9uSXRlbS5tbQ0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1RleHRNYW5pcHVsYXRpb25JdGVtLm1tDQpAQCAtMjUsNiArMjUsNyBAQA0KIA0KICNpbXBvcnQg
ImNvbmZpZy5oIg0KICNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRpb25JdGVtLmgiDQorI2ltcG9y
dCAiX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgiDQogDQogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPg0KIA0KQEAgLTUzLDQgKzU0LDU4IEBADQogICAgIHJldHVybiBfdG9rZW5zLmdldCgpOw0K
IH0NCiANCistIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdA0KK3sNCisgICAgaWYgKHNlbGYgPT0g
b2JqZWN0KQ0KKyAgICAgICAgcmV0dXJuIFlFUzsNCisNCisgICAgaWYgKCFbb2JqZWN0IGlzS2lu
ZE9mQ2xhc3M6W3NlbGYgY2xhc3NdXSkNCisgICAgICAgIHJldHVybiBOTzsNCisNCisgICAgcmV0
dXJuIFtzZWxmIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOm9iamVjdCBpbmNsdWRpbmdD
b250ZW50RXF1YWxpdHk6WUVTXTsNCit9DQorDQorLSAoQk9PTClpc0VxdWFsVG9UZXh0TWFuaXB1
bGF0aW9uSXRlbTooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilvdGhlckl0ZW0gaW5jbHVkaW5n
Q29udGVudEVxdWFsaXR5OihCT09MKWluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eQ0KK3sNCisgICAg
aWYgKCFvdGhlckl0ZW0pDQorICAgICAgICByZXR1cm4gTk87DQorDQorICAgIGlmICghKHNlbGYu
aWRlbnRpZmllciA9PSBvdGhlckl0ZW0uaWRlbnRpZmllciB8fCBbc2VsZi5pZGVudGlmaWVyIGlz
RXF1YWxUb1N0cmluZzpvdGhlckl0ZW0uaWRlbnRpZmllcl0pIHx8IHNlbGYudG9rZW5zLmNvdW50
ICE9IG90aGVySXRlbS50b2tlbnMuY291bnQpDQorICAgICAgICByZXR1cm4gTk87DQorDQorICAg
IF9fYmxvY2sgQk9PTCB0b2tlbnNBcmVFcXVhbCA9IFlFUzsNCisgICAgTlNVSW50ZWdlciBjb3Vu
dCA9IHN0ZDo6bWluKHNlbGYudG9rZW5zLmNvdW50LCBvdGhlckl0ZW0udG9rZW5zLmNvdW50KTsN
CisgICAgW3NlbGYudG9rZW5zIGVudW1lcmF0ZU9iamVjdHNBdEluZGV4ZXM6W05TSW5kZXhTZXQg
aW5kZXhTZXRXaXRoSW5kZXhlc0luUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgY291bnQpXSBvcHRpb25z
OjAgdXNpbmdCbG9jazpeKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqdG9rZW4sIE5TVUludGVn
ZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsNCisgICAgICAgIF9XS1RleHRNYW5pcHVsYXRpb25Ub2tl
biAqb3RoZXJUb2tlbiA9IG90aGVySXRlbS50b2tlbnNbaW5kZXhdOw0KKyAgICAgICAgaWYgKCFb
dG9rZW4gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOm90aGVyVG9rZW4gaW5jbHVkaW5n
Q29udGVudEVxdWFsaXR5OmluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eV0pIHsNCisgICAgICAgICAg
ICB0b2tlbnNBcmVFcXVhbCA9IE5POw0KKyAgICAgICAgICAgICpzdG9wID0gWUVTOw0KKyAgICAg
ICAgfQ0KKyAgICB9XTsNCisNCisgICAgcmV0dXJuIHRva2Vuc0FyZUVxdWFsOw0KK30NCisNCist
IChOU1N0cmluZyAqKWRlc2NyaXB0aW9uDQorew0KKyAgICByZXR1cm4gW3NlbGYgX2Rlc2NyaXB0
aW9uUHJlc2VydmluZ1ByaXZhY3k6WUVTXTsNCit9DQorDQorLSAoTlNTdHJpbmcgKilkZWJ1Z0Rl
c2NyaXB0aW9uDQorew0KKyAgICByZXR1cm4gW3NlbGYgX2Rlc2NyaXB0aW9uUHJlc2VydmluZ1By
aXZhY3k6Tk9dOw0KK30NCisNCistIChOU1N0cmluZyAqKV9kZXNjcmlwdGlvblByZXNlcnZpbmdQ
cml2YWN5OihCT09MKXByZXNlcnZlUHJpdmFjeQ0KK3sNCisgICAgTlNNdXRhYmxlQXJyYXk8TlNT
dHJpbmcgKj4gKnJlY3Vyc2l2ZURlc2NyaXB0aW9ucyA9IFtOU011dGFibGVBcnJheSBhcnJheV07
DQorICAgIFtzZWxmLnRva2VucyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpeKF9XS1RleHRN
YW5pcHVsYXRpb25Ub2tlbiAqdG9rZW4sIE5TVUludGVnZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsN
CisgICAgICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IHByZXNlcnZlUHJpdmFjeSA/IHRva2Vu
LmRlc2NyaXB0aW9uIDogdG9rZW4uZGVidWdEZXNjcmlwdGlvbjsNCisgICAgICAgIFtyZWN1cnNp
dmVEZXNjcmlwdGlvbnMgYWRkT2JqZWN0OmRlc2NyaXB0aW9uXTsNCisgICAgfV07DQorICAgIE5T
U3RyaW5nICp0b2tlbkRlc2NyaXB0aW9uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJb
XG5cdCVAXG5dIiwgW3JlY3Vyc2l2ZURlc2NyaXB0aW9ucyBjb21wb25lbnRzSm9pbmVkQnlTdHJp
bmc6QCIsXG5cdCJdXTsNCisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBpZGVudGlmaWVyID0gJUAgdG9rZW5zID0gJUA+Iiwg
c2VsZi5jbGFzcywgc2VsZiwgc2VsZi5pZGVudGlmaWVyLCB0b2tlbkRlc2NyaXB0aW9uXTsNCisg
ICAgcmV0dXJuIGRlc2NyaXB0aW9uOw0KK30NCisNCiBAZW5kDQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tl
bi5oDQppbmRleCA1MjEyOWQ0Zjk2MC4uMTkwMTYxYmFiZTMgMTAwNjQ0DQotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgNCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9u
VG9rZW4uaA0KQEAgLTI3LDExICsyNywxOCBAQA0KIA0KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPg0KIA0KK05TX0FTU1VNRV9OT05OVUxMX0JFR0lODQorDQogV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpDQogQGludGVyZmFjZSBf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gOiBOU09iamVjdA0KIA0KLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU1N0cmluZyAqaWRlbnRpZmllcjsNCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgTlNTdHJpbmcgKmNvbnRlbnQ7DQorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxl
LCBjb3B5KSBOU1N0cmluZyAqaWRlbnRpZmllcjsNCitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVs
bGFibGUsIGNvcHkpIE5TU3RyaW5nICpjb250ZW50Ow0KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBn
ZXR0ZXI9aXNFeGNsdWRlZCkgQk9PTCBleGNsdWRlZDsNCiANCistIChCT09MKWlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbjoobnVsbGFibGUgX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICop
b3RoZXJUb2tlbiBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6KEJPT0wpaW5jbHVkaW5nQ29udGVu
dEVxdWFsaXR5Ow0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCByZWFkb25seSkgTlNTdHJp
bmcgKmRlYnVnRGVzY3JpcHRpb247DQorDQogQGVuZA0KKw0KK05TX0FTU1VNRV9OT05OVUxMX0VO
RA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0
TWFuaXB1bGF0aW9uVG9rZW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tDQppbmRleCAzZmNjNGU5MjA5YS4uOTI2M2I4ZjQw
NmMgMTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4
dE1hbmlwdWxhdGlvblRva2VuLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1tDQpAQCAtMjcsNCArMjcsNTkgQEANCiAj
aW1wb3J0ICJfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCINCiANCiBAaW1wbGVtZW50YXRpb24g
X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuDQorDQorc3RhdGljIEJPT0wgaXNFcXVhbE9yQm90aE5p
bChpZCBhLCBpZCBiKQ0KK3sNCisgICAgaWYgKGEgPT0gYikNCisgICAgICAgIHJldHVybiBZRVM7
DQorDQorICAgIHJldHVybiBbYSBpc0VxdWFsOmJdOw0KK30NCisNCistIChCT09MKWlzRXF1YWw6
KGlkKW9iamVjdA0KK3sNCisgICAgaWYgKHNlbGYgPT0gb2JqZWN0KQ0KKyAgICAgICAgcmV0dXJu
IFlFUzsNCisNCisgICAgaWYgKCFbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W3NlbGYgY2xhc3NdXSkN
CisgICAgICAgIHJldHVybiBOTzsNCisNCisgICAgcmV0dXJuIFtzZWxmIGlzRXF1YWxUb1RleHRN
YW5pcHVsYXRpb25Ub2tlbjpvYmplY3QgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU107DQor
fQ0KKw0KKy0gKEJPT0wpaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOihfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gKilvdGhlclRva2VuIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTooQk9P
TClpbmNsdWRpbmdDb250ZW50RXF1YWxpdHkNCit7DQorICAgIGlmICghb3RoZXJUb2tlbikNCisg
ICAgICAgIHJldHVybiBOTzsNCisNCisgICAgQk9PTCBlcXVhbElkZW50aWZpZXJzID0gaXNFcXVh
bE9yQm90aE5pbChzZWxmLmlkZW50aWZpZXIsIG90aGVyVG9rZW4uaWRlbnRpZmllcik7DQorICAg
IEJPT0wgZXF1YWxFeGNsdXNpb24gPSBzZWxmLmlzRXhjbHVkZWQgPT0gb3RoZXJUb2tlbi5pc0V4
Y2x1ZGVkOw0KKyAgICBCT09MIGVxdWFsQ29udGVudCA9ICFpbmNsdWRpbmdDb250ZW50RXF1YWxp
dHkgfHwgaXNFcXVhbE9yQm90aE5pbChzZWxmLmNvbnRlbnQsIG90aGVyVG9rZW4uY29udGVudCk7
DQorDQorICAgIHJldHVybiBlcXVhbElkZW50aWZpZXJzICYmIGVxdWFsRXhjbHVzaW9uICYmIGVx
dWFsQ29udGVudDsNCit9DQorDQorLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbg0KK3sNCisgICAg
cmV0dXJuIFtzZWxmIF9kZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5OllFU107DQorfQ0KKw0K
Ky0gKE5TU3RyaW5nICopZGVidWdEZXNjcmlwdGlvbg0KK3sNCisgICAgcmV0dXJuIFtzZWxmIF9k
ZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5Ok5PXTsNCit9DQorDQorLSAoTlNTdHJpbmcgKilf
ZGVzY3JpcHRpb25QcmVzZXJ2aW5nUHJpdmFjeTooQk9PTClwcmVzZXJ2ZVByaXZhY3kNCit7DQor
ICAgIE5TTXV0YWJsZVN0cmluZyAqZGVzY3JpcHRpb24gPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBpZGVudGlmaWVyID0gJUA7IGlzRXhjbHVkZWQgPSAlaSIs
IHNlbGYuY2xhc3MsIHNlbGYsIHNlbGYuaWRlbnRpZmllciwgc2VsZi5pc0V4Y2x1ZGVkXTsNCisg
ICAgaWYgKHByZXNlcnZlUHJpdmFjeSkNCisgICAgICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRGb3Jt
YXQ6QCI7IGNvbnRlbnQgbGVuZ3RoID0gJWx1IiwgKHVuc2lnbmVkIGxvbmcpc2VsZi5jb250ZW50
Lmxlbmd0aF07DQorICAgIGVsc2UNCisgICAgICAgIFtkZXNjcmlwdGlvbiBhcHBlbmRGb3JtYXQ6
QCI7IGNvbnRlbnQgPSAlQCIsIHNlbGYuY29udGVudF07DQorDQorICAgIFtkZXNjcmlwdGlvbiBh
cHBlbmRTdHJpbmc6QCI+Il07DQorDQorICAgIHJldHVybiBbW2Rlc2NyaXB0aW9uIGNvcHldIGF1
dG9yZWxlYXNlXTsNCit9DQorDQogQGVuZA0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZw0KaW5kZXggN2NhY2M3YzFmNGEuLmMwODI0ZjhlNmYxIDEwMDY0NA0K
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nDQorKysgYi9Ub29scy9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEs
MjIgQEANCisyMDE5LTEyLTAyICBMb3VpZSBMaXZvbi1CZW1lbCAgPGxsaXZvbmJlbWVsQGFwcGxl
LmNvbT4NCisNCisgICAgICAgIEFkZCBoZWxwZXIgbWV0aG9kcyBmb3IgZGVzY3JpcHRpb24gYW5k
IGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQSQ0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDc1OA0KKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU3NDM4MjAwPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLg0KKw0K
KyAgICAgICAgQWRkIHRlc3RzIGZvciB0aGUgbmV3IG1ldGhvZHMuIE1vc3QgYXJlIGVxdWFsaXR5
IHRlc3RzIGZvciB2YXJpb3VzIHNpdHVhdGlvbnMsIGFuZCBhcmUgbW92ZWQgb3ZlciBmcm9tIHRo
ZQ0KKyAgICAgICAgU2FmYXJpIHVuaXQgdGVzdHMgSSBoYWQgZm9yIHRoZSBjYXRlZ29yeSBtZXRo
b2RzIHRoYXQgaGFkIHRoZSBzYW1lIHB1cnBvc2UuDQorDQorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbToNCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToNCisgICAgICAgICAgICAtIEFkZCB0ZXN0IHRvIG1ha2Ugc3VyZSB0
aGUgY29udGVudCBpc24ndCBpbmNsdWRlZCBpbiB0aGUgcmVndWxhciAtZGVzY3JpcHRpb24sIGJ1
dCB0aGUgaWRlbnRpZmllciBpcy4gQW5kDQorICAgICAgICAgICAgICBUaGF0IC1kZWJ1Z0Rlc2Ny
aXB0aW9uIGRvZXMgaW5jbHVkZSB0aGUgY29udGVudHMuDQorICAgICAgICAgICAgLSBBZGQgbWFu
eSB0ZXN0cyBlcXVhbGl0eSBmb3IgdmFyaW91cyBzaXR1YXRpb25zLCB0ZXN0aW5nIGJvdGggd2l0
aCBhbmQgd2l0aG91dCBjb250ZW50IGVxdWFsaXR5Lg0KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbik6DQorICAgICAgICAgICAgQWRkIGEgaGVscGVy
IGZvciBjcmVhdGluZyBhIHRva2VuIGluIG9uZSBsaW5lLg0KKw0KIDIwMTktMTEtMTkgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+DQogDQogICAgICAgICBSZW1vdmUgcnVuTnVsbGlz
aEF3YXJlT3BlcmF0b3JzRW5hYmxlZA0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQ0KaW5kZXggYzYyY2UwNjY1
ZjYuLmVhNDgzODc5NjBjIDEwMDY0NA0KLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tDQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0NCkBAIC00MjQsNSArNDI0LDQ5
NSBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxX
aGVuRXhjbHVzaW9uSXNWaW9sYXRlZCkNCiAgICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5oaSwgPGVt
PldlYktpdHRlbjwvZW0+PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsNCiB9DQogDQorLy8gTUFSSzogLSBfV0tU
ZXh0TWFuaXB1bGF0aW9uVG9rZW4gVGVzdHMNCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRl
eHRNYW5pcHVsYXRpb25Ub2tlbkRlYnVnRGVzY3JpcHRpb24pDQorew0KKyAgICBhdXRvIHRva2Vu
ID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAg
ICBbdG9rZW4gc2V0SWRlbnRpZmllcjpAImZvb19pc190aGVfaWRlbnRpZmllciJdOw0KKyAgICBb
dG9rZW4gc2V0Q29udGVudDpAImJhcl9pc190aGVfY29udGVudCJdOw0KKw0KKyAgICBOU1N0cmlu
ZyAqZGVzY3JpcHRpb24gPSBbdG9rZW4gZGVzY3JpcHRpb25dOw0KKyAgICBFWFBFQ1RfVFJVRShb
ZGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJmb29faXNfdGhlX2lkZW50aWZpZXIiXSk7DQor
ICAgIEVYUEVDVF9GQUxTRShbZGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJiYXJfaXNfdGhl
X2NvbnRlbnQiXSk7DQorDQorICAgIE5TU3RyaW5nICpkZWJ1Z0Rlc2NyaXB0aW9uID0gW3Rva2Vu
IGRlYnVnRGVzY3JpcHRpb25dOw0KKyAgICBFWFBFQ1RfVFJVRShbZGVidWdEZXNjcmlwdGlvbiBj
b250YWluc1N0cmluZzpAImZvb19pc190aGVfaWRlbnRpZmllciJdKTsNCisgICAgRVhQRUNUX1RS
VUUoW2RlYnVnRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJiYXJfaXNfdGhlX2NvbnRlbnQi
XSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2Vu
Tm90RXF1YWxUb05pbCkNCit7DQorICAgIGF1dG8gdG9rZW5BID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5BIHNldElkZW50aWZp
ZXI6QCJBIl07DQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpAIkEiXTsNCisNCisgICAgRVhQRUNU
X0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOm5pbCBpbmNsdWRp
bmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjpuaWwgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5P
XSk7DQorDQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpuaWxdOw0KKyAgICBbdG9rZW5BIHNl
dENvbnRlbnQ6bmlsXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1h
bmlwdWxhdGlvblRva2VuOm5pbCBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAg
IEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjpuaWwg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxh
dGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuRXF1YWxpdHlXaXRoRXF1YWxJZGVudGlmaWVycykN
Cit7DQorICAgIGF1dG8gdG9rZW4xID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tl
biBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW4xIHNldElkZW50aWZpZXI6QCJBIl07DQorICAg
IGF1dG8gdG9rZW4yID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10g
aW5pdF0pOw0KKyAgICBbdG9rZW4yIHNldElkZW50aWZpZXI6QCJBIl07DQorDQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbjEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuMi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tl
bjEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuMi5nZXQoKSBpbmNsdWRpbmdD
b250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gU2FtZSBpZGVudGlmaWVycywgZGlmZmVy
ZW50IGNvbnRlbnQuDQorICAgIFt0b2tlbjEgc2V0Q29udGVudDpAIjEiXTsNCisgICAgW3Rva2Vu
MiBzZXRDb250ZW50OkAiMiJdOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuMSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuMSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW4yLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0K
KyAgICAvLyBTYW1lIGlkZW50aWZpZXJzLCBkaWZmZXJlbnQgZXhjbHVzaW9uLg0KKyAgICBbdG9r
ZW4xIHNldEV4Y2x1ZGVkOk5PXTsNCisgICAgW3Rva2VuMiBzZXRFeGNsdWRlZDpZRVNdOw0KKyAg
ICBbdG9rZW4xIHNldENvbnRlbnQ6bmlsXTsNCisgICAgW3Rva2VuMiBzZXRDb250ZW50Om5pbF07
DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW4xIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tl
bjp0b2tlbjIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBF
Q1RfRkFMU0UoW3Rva2VuMSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdl
dCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICAvLyBTYW1lIGlkZW50
aWZpZXJzLCBkaWZmZXJlbnQgZXhjbHVzaW9uIGFuZCBkaWZmZXJlbnQgY29udGVudC4NCisgICAg
W3Rva2VuMSBzZXRDb250ZW50OkAiMSJdOw0KKyAgICBbdG9rZW4yIHNldENvbnRlbnQ6QCIyIl07
DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW4xIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tl
bjp0b2tlbjIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBF
Q1RfRkFMU0UoW3Rva2VuMSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdl
dCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5p
cHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbkVxdWFsaXR5V2l0aERpZmZlcmVudElkZW50
aWZpZXJzKQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxh
dGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpAIkEi
XTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2Vu
IGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkIgc2V0SWRlbnRpZmllcjpAIkIiXTsNCisNCisg
ICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRv
a2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9G
QUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIC8vIERpZmZlcmVudCBpZGVu
dGlmaWVycywgc2FtZSBjb250ZW50Lg0KKyAgICBbdG9rZW5BIHNldENvbnRlbnQ6QCJjb250ZW50
Il07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAgRVhQRUNUX0ZB
TFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBp
bmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5B
IGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29u
dGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIC8vIERpZmZlcmVudCBpZGVudGlmaWVycywgc2Ft
ZSBleGNsdXNpb24uDQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpuaWxdOw0KKyAgICBbdG9rZW5C
IHNldENvbnRlbnQ6bmlsXTsNCisgICAgW3Rva2VuQSBzZXRFeGNsdWRlZDpZRVNdOw0KKyAgICBb
dG9rZW5CIHNldEV4Y2x1ZGVkOllFU107DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10p
Ow0KKw0KKyAgICAvLyBEaWZmZXJlbnQgaWRlbnRpZmllcnMsIHNhbWUgY29udGVudCBhbmQgc2Ft
ZSBleGNsdXNpb24uDQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAg
W3Rva2VuQiBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2Vu
QSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRv
VGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxp
dHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9u
VG9rZW5FcXVhbGl0eVdpdGhOaWxJZGVudGlmaWVycykNCit7DQorICAgIGF1dG8gdG9rZW5BID0g
YWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBF
WFBFQ1RfTlVMTChbdG9rZW5BIGlkZW50aWZpZXJdKTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9w
dE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tl
bkIgc2V0SWRlbnRpZmllcjpAIkIiXTsNCisgICAgYXV0byB0b2tlbkMgPSBhZG9wdE5TKFtbX1dL
VGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIEVYUEVDVF9OVUxMKFt0
b2tlbkMgaWRlbnRpZmllcl0pOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFs
VG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlw
dWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsN
CisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46
dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNU
X1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgp
IGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICAvLyBFcXVhbCBjb250ZW50
Lg0KKyAgICBbdG9rZW5BIHNldENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIFt0b2tlbkIgc2V0
Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAgW3Rva2VuQyBzZXRDb250ZW50OkAiY29udGVudCJd
Ow0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9r
ZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQ
RUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5n
ZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rv
a2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFs
VG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpOT10pOw0KKw0KKyAgICAvLyBEaWZmZXJlbnQgY29udGVudC4NCisgICAgW3Rva2VuQSBz
ZXRDb250ZW50OkAiY29udGVudEEiXTsNCisgICAgW3Rva2VuQiBzZXRDb250ZW50OkAiY29udGVu
dEIiXTsNCisgICAgW3Rva2VuQyBzZXRDb250ZW50OkAiY29udGVudEMiXTsNCisgICAgRVhQRUNU
X0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9r
ZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5n
Q29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxU
b1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkMuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFs
aXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVs
YXRpb25Ub2tlbjp0b2tlbkMuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQor
fQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuRXF1YWxp
dHlXaXRoRW1wdHlJZGVudGlmaWVycykNCit7DQorICAgIGF1dG8gdG9rZW5BID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5BIHNl
dElkZW50aWZpZXI6QCIiXTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9wdE5TKFtbX1dLVGV4dE1h
bmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkIgc2V0SWRlbnRpZmll
cjpAIkIiXTsNCisgICAgYXV0byB0b2tlbkMgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkMgc2V0SWRlbnRpZmllcjpAIiJdOw0K
Kw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9r
ZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQ
RUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5n
ZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rv
a2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFs
VG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpOT10pOw0KKw0KKyAgICAvLyBFcXVhbCBjb250ZW50Lg0KKyAgICBbdG9rZW5BIHNldENv
bnRlbnQ6QCJjb250ZW50Il07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAImNvbnRlbnQiXTsN
CisgICAgW3Rva2VuQyBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6Tk9dKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNd
KTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9r
ZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICAv
LyBEaWZmZXJlbnQgY29udGVudC4NCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudEEi
XTsNCisgICAgW3Rva2VuQiBzZXRDb250ZW50OkAiY29udGVudEIiXTsNCisgICAgW3Rva2VuQyBz
ZXRDb250ZW50OkAiY29udGVudEMiXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVh
bFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1
YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5p
cHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7
DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tl
bjp0b2tlbkMuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBF
Q1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkMuZ2V0
KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlw
dWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuV2l0aE5pbENvbnRlbnQpDQorew0KKyAgICBh
dXRvIHRva2VuQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGlu
aXRdKTsNCisgICAgW3Rva2VuQSBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBhdXRvIHRva2Vu
QiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisg
ICAgW3Rva2VuQiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKw0KKyAgICBFWFBFQ1RfTlVMTChbdG9r
ZW5BIGNvbnRlbnRdKTsNCisgICAgRVhQRUNUX05VTEwoW3Rva2VuQiBjb250ZW50XSk7DQorICAg
IEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2Vu
Qi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgW3Rva2VuQiBzZXRDb250ZW50OkAi
Il07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25U
b2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBF
WFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIu
Z2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIFt0b2tlbkIgc2V0
Q29udGVudDpAIkIiXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1h
bmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRv
a2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQor
VEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5XaXRoRW1wdHlDb250
ZW50KQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlv
blRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpAIkEiXTsN
CisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiIl07DQorICAgIGF1dG8gdG9rZW5CID0gYWRvcHRO
UyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5C
IHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAIiJdOw0KKw0K
KyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0
b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1Rf
VFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIFt0b2tlbkIgc2V0Q29udGVu
dDpuaWxdOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisg
ICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9r
ZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICBbdG9rZW5C
IHNldENvbnRlbnQ6QCJCIl07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5
OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRp
b25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0K
Kw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuV2l0aElkZW50
aWNhbENvbnRlbnQpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuQSBzZXRJZGVudGlmaWVy
OkAiQSJdOw0KKyAgICBbdG9rZW5BIHNldENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIGF1dG8g
dG9rZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0p
Ow0KKyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIFt0b2tlbkIgc2V0Q29u
dGVudDpAImNvbnRlbnQiXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30N
CisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbldpdGhQb2lu
dGVyRXF1YWxDb250ZW50KQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRp
ZmllcjpAIkEiXTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxh
dGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkIgc2V0SWRlbnRpZmllcjpAIkEi
XTsNCisNCisgICAgTlNTdHJpbmcgKmNvbnRlbnRTdHJpbmcgPSBAImNvbnRlbnQiOw0KKyAgICBb
dG9rZW5BIHNldENvbnRlbnQ6Y29udGVudFN0cmluZ107DQorICAgIFt0b2tlbkIgc2V0Q29udGVu
dDpjb250ZW50U3RyaW5nXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30N
CisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbldpdGhUcmFp
bGluZ1NwYWNlKQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpA
IkEiXTsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBhdXRvIHRv
a2VuQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsN
CisgICAgW3Rva2VuQiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW5CIHNldENvbnRl
bnQ6QCJjb250ZW50ICJdOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30N
CisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbkVxdWFsVG9T
ZWxmKQ0KK3sNCisgICAgYXV0byB0b2tlbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9u
VG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuIHNldElkZW50aWZpZXI6QCJBIl07DQor
ICAgIFt0b2tlbiBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShb
dG9rZW4gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuIGlzRXF1YWxU
b1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxp
dHk6Tk9dKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuIGlzRXF1YWw6dG9rZW4uZ2V0KCldKTsN
Cit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5OU09i
amVjdEVxdWFsaXR5V2l0aE90aGVyVG9rZW4pDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0
TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2Vu
QSBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW5BIHNldENvbnRlbnQ6QCJjb250ZW50
Il07DQorICAgIGF1dG8gdG9rZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tl
biBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJBIl07DQorICAg
IFt0b2tlbkIgc2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAgYXV0byB0b2tlbkMgPSBhZG9w
dE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tl
bkMgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisgICAgW3Rva2VuQyBzZXRDb250ZW50OkAiY29udGVu
dCAiXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisg
ICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsOnRva2VuQi5nZXQoKV0pOw0KKw0KKyAgICBF
WFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5D
LmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNF
KFt0b2tlbkEgaXNFcXVhbDp0b2tlbkMuZ2V0KCldKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5OU09iamVjdEVxdWFsaXR5V2l0aE5vblRva2Vu
KQ0KK3sNCisgICAgYXV0byB0b2tlbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9r
ZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuIHNldElkZW50aWZpZXI6QCJBIl07DQorICAg
IFt0b2tlbiBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBOU1N0cmluZyAqc3RyaW5nID0g
QCJjb250ZW50IjsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbiBpc0VxdWFsOnN0cmluZ10p
Ow0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuIGlzRXF1YWw6bmlsXSk7DQorfQ0KKw0KKy8vIE1B
Uks6IC0gX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gVGVzdHMNCisNCitzdGF0aWMgUmV0YWluUHRy
PF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbj4gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKE5T
U3RyaW5nICppZGVudGlmaWVyLCBCT09MIGV4Y2x1ZGVkLCBOU1N0cmluZyAqY29udGVudCkNCit7
DQorICAgIGF1dG8gdG9rZW4gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFs
bG9jXSBpbml0XSk7DQorICAgIFt0b2tlbiBzZXRJZGVudGlmaWVyOmlkZW50aWZpZXJdOw0KKyAg
ICBbdG9rZW4gc2V0RXhjbHVkZWQ6ZXhjbHVkZWRdOw0KKyAgICBbdG9rZW4gc2V0Q29udGVudDpj
b250ZW50XTsNCisgICAgcmV0dXJuIHRva2VuOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRp
b24sIFRleHRNYW5pcHVsYXRpb25JdGVtRGVidWdEZXNjcmlwdGlvbikNCit7DQorICAgIGF1dG8g
dG9rZW5BID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAicHVibGljX2lkZW50aWZpZXJf
QSIsIE5PLCBAInByaXZhdGVfY29udGVudF9BIik7DQorICAgIGF1dG8gdG9rZW5CID0gY3JlYXRl
VGV4dE1hbmlwdWxhdGlvblRva2VuKEAicHVibGljX2lkZW50aWZpZXJfQiIsIE5PLCBAInByaXZh
dGVfY29udGVudF9CIik7DQorICAgIGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1
bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAicHVibGljX2l0ZW1faWRlbnRp
ZmllciIgdG9rZW5zOkBbIHRva2VuQS5nZXQoKSwgdG9rZW5CLmdldCgpIF1dKTsNCisNCisgICAg
TlNTdHJpbmcgKmRlYnVnRGVzY3JpcHRpb24gPSBbaXRlbSBkZWJ1Z0Rlc2NyaXB0aW9uXTsNCisg
ICAgRVhQRUNUX1RSVUUoW2RlYnVnRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJwdWJsaWNf
aWRlbnRpZmllcl9BIl0pOw0KKyAgICBFWFBFQ1RfVFJVRShbZGVidWdEZXNjcmlwdGlvbiBjb250
YWluc1N0cmluZzpAInB1YmxpY19pZGVudGlmaWVyX0IiXSk7DQorICAgIEVYUEVDVF9UUlVFKFtk
ZWJ1Z0Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHJpdmF0ZV9jb250ZW50X0EiXSk7DQor
ICAgIEVYUEVDVF9UUlVFKFtkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHJpdmF0
ZV9jb250ZW50X0IiXSk7DQorICAgIEVYUEVDVF9UUlVFKFtkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnRh
aW5zU3RyaW5nOkAicHVibGljX2l0ZW1faWRlbnRpZmllciJdKTsNCisNCisgICAgTlNTdHJpbmcg
KmRlc2NyaXB0aW9uID0gW2l0ZW0gZGVzY3JpcHRpb25dOw0KKyAgICBFWFBFQ1RfVFJVRShbZGVz
Y3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJwdWJsaWNfaWRlbnRpZmllcl9BIl0pOw0KKyAgICBF
WFBFQ1RfVFJVRShbZGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJwdWJsaWNfaWRlbnRpZmll
cl9CIl0pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAi
cHJpdmF0ZV9jb250ZW50X0EiXSk7DQorICAgIEVYUEVDVF9GQUxTRShbZGVzY3JpcHRpb24gY29u
dGFpbnNTdHJpbmc6QCJwcml2YXRlX2NvbnRlbnRfQiJdKTsNCisgICAgRVhQRUNUX1RSVUUoW2Rl
c2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHVibGljX2l0ZW1faWRlbnRpZmllciJdKTsNCit9
DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5
VG9OaWxJdGVtKQ0KK3sNCisgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVs
YXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgXV0pOw0K
Kw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW0gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06
bmlsIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFtp
dGVtIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOm5pbCBpbmNsdWRpbmdDb250ZW50RXF1
YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0
aW9uSXRlbUVxdWFsaXR5VG9TZWxmKQ0KK3sNCisgICAgYXV0byB0b2tlbiA9IGNyZWF0ZVRleHRN
YW5pcHVsYXRpb25Ub2tlbihAIkEiLCBOTywgQCJ0b2tlbiIpOw0KKyAgICBhdXRvIGl0ZW0gPSBh
ZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmll
cjpAIkIiIHRva2VuczpAWyB0b2tlbi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVDVF9UUlVFKFtp
dGVtIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW0uZ2V0KCkgaW5jbHVkaW5nQ29u
dGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uSXRlbTppdGVtLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10p
Ow0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbSBpc0VxdWFsOml0ZW0uZ2V0KCldKTsNCit9DQorDQor
VEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUJhc2ljRXF1YWxpdHkp
DQorew0KKyAgICBhdXRvIHRva2VuMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEi
LCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbjIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0
aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQorICAgIGF1dG8gaXRlbUEgPSBhZG9wdE5T
KFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEi
IHRva2VuczpAWyB0b2tlbjEuZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1CID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0
b2tlbnM6QFsgdG9rZW4yLmdldCgpIF1dKTsNCisNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRF
cXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5p
cHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0K
K30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25JdGVtQmFzaWNF
cXVhbGl0eVdpdGhNdWx0aXBsZVRva2VucykNCit7DQorICAgIGF1dG8gdG9rZW5BMSA9IGNyZWF0
ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0
b2tlbkEyID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMiIsIE5PLCBAInRva2VuMiIp
Ow0KKyAgICBhdXRvIHRva2VuQjEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwg
Tk8sIEAidG9rZW4xIik7DQorICAgIGF1dG8gdG9rZW5CMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRp
b25Ub2tlbihAIjIiLCBOTywgQCJ0b2tlbjIiKTsNCisNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0
TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAi
QSIgdG9rZW5zOkBbIHRva2VuQTEuZ2V0KCksIHRva2VuQTIuZ2V0KCkgXV0pOw0KKyAgICBhdXRv
IGl0ZW1CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0
aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5CMS5nZXQoKSwgdG9rZW5CMi5nZXQoKSBd
XSk7DQorDQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9u
SXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVY
UEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5U2ltaWxhclRva2Vuc1dpdGhEaWZm
ZXJlbnRDb250ZW50KQ0KK3sNCisgICAgYXV0byB0b2tlbjEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0
aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQorICAgIGF1dG8gdG9rZW4yID0gY3JlYXRl
VGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMiIpOw0KKyAgICBhdXRvIGl0
ZW1BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElk
ZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW4xLmdldCgpIF1dKTsNCisgICAgYXV0byBpdGVt
QiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVu
dGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuMi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVDVF9G
QUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5j
bHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxh
dGlvbkl0ZW1FcXVhbGl0eVdpdGhPdXRPZk9yZGVyVG9rZW5zKQ0KK3sNCisgICAgYXV0byB0b2tl
bkExID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0K
KyAgICBhdXRvIHRva2VuQTIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8s
IEAidG9rZW4yIik7DQorICAgIGF1dG8gdG9rZW5CMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25U
b2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbkIyID0gY3JlYXRlVGV4
dE1hbmlwdWxhdGlvblRva2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKw0KKyAgICBhdXRvIGl0
ZW1BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElk
ZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5BMS5nZXQoKSwgdG9rZW5BMi5nZXQoKSBdXSk7
DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxs
b2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkIyLmdldCgpLCB0b2tl
bkIxLmdldCgpIF1dKTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0
ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RF
U1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcXVhbGl0eVdpdGhQb2lu
dGVyRXF1YWxUb2tlbnMpDQorew0KKyAgICBhdXRvIHRva2VuMSA9IGNyZWF0ZVRleHRNYW5pcHVs
YXRpb25Ub2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbjIgPSBjcmVh
dGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7DQorDQorICAgIGF1
dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRX
aXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbjEuZ2V0KCksIHRva2VuMi5nZXQoKSBd
XSk7DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
YWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbjEuZ2V0KCksIHRv
a2VuMi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRl
bTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVT
VChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5V2l0aFBvaW50
ZXJFcXVhbFRva2VuQXJyYXlzKQ0KK3sNCisgICAgYXV0byB0b2tlbjEgPSBjcmVhdGVUZXh0TWFu
aXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQorICAgIGF1dG8gdG9rZW4yID0g
Y3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKyAgICBO
U0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqPiAqdG9rZW5zID0gQFsgdG9rZW4xLmdl
dCgpLCB0b2tlbjIuZ2V0KCkgXTsNCisNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5z
OnRva2Vuc10pOw0KKyAgICBhdXRvIGl0ZW1CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRp
b25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6dG9rZW5zXSk7DQor
DQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTpp
dGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9U
UlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9u
LCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5V2l0aE1pc21hdGNoZWRUb2tlbkNvdW50cykN
Cit7DQorICAgIGF1dG8gdG9rZW5BMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEi
LCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbkEyID0gY3JlYXRlVGV4dE1hbmlwdWxh
dGlvblRva2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKyAgICBhdXRvIHRva2VuQTMgPSBjcmVh
dGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIzIiwgTk8sIEAidG9rZW4zIik7DQorICAgIGF1dG8g
dG9rZW5CMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEiLCBOTywgQCJ0b2tlbjEi
KTsNCisgICAgYXV0byB0b2tlbkIyID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMiIs
IE5PLCBAInRva2VuMiIpOw0KKw0KKyAgICBhdXRvIGl0ZW1BID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsg
dG9rZW5BMS5nZXQoKSwgdG9rZW5BMi5nZXQoKSwgdG9rZW5BMy5nZXQoKSBdXSk7DQorICAgIGF1
dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRX
aXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkIxLmdldCgpLCB0b2tlbkIyLmdldCgp
IF1dKTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAg
IEVYUEVDVF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIu
Z2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorDQorICAgIEVYUEVDVF9GQUxT
RShbaXRlbUIgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUEuZ2V0KCkgaW5jbHVk
aW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1CIGlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1BLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRp
b25JdGVtRXF1YWxpdHlXaXRoRGlmZmVyZW50VG9rZW5JZGVudGlmaWVycykNCit7DQorICAgIGF1
dG8gdG9rZW5BID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiQSIsIE5PLCBAInRva2Vu
Iik7DQorICAgIGF1dG8gdG9rZW5CID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiQiIs
IE5PLCBAInRva2VuIik7DQorICAgIGF1dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tl
bkEuZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVs
YXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5C
LmdldCgpIF1dKTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7
DQorICAgIEVYUEVDVF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06
aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1Qo
VGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcXVhbGl0eVdpdGhOaWxJZGVu
dGlmaWVycykNCit7DQorICAgIGF1dG8gdG9rZW4gPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9r
ZW4oQCJBIiwgTk8sIEAidG9rZW4iKTsNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOm5pbCB0b2tlbnM6
QFsgdG9rZW4uZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1CID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6bmlsIHRva2VuczpAWyB0
b2tlbi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRl
bTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVT
VChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5V2l0aERpZmZl
cmVudFRva2VuRXhjbHVzaW9ucykNCit7DQorICAgIGF1dG8gdG9rZW5BID0gY3JlYXRlVGV4dE1h
bmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuIik7DQorICAgIGF1dG8gdG9rZW5CID0g
Y3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIFlFUywgQCJ0b2tlbiIpOw0KKyAgICBh
dXRvIGl0ZW1BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0
V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5BLmdldCgpIF1dKTsNCisgICAgYXV0
byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdp
dGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQi5nZXQoKSBdXSk7DQorDQorICAgIEVY
UEVDVF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0
KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0
ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0Nv
bnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRN
YW5pcHVsYXRpb25JdGVtTlNPYmplY3RFcXVhbGl0eVdpdGhPdGhlckl0ZW0pDQorew0KKyAgICBh
dXRvIHRva2VuQTEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9r
ZW4xIik7DQorICAgIGF1dG8gdG9rZW5BMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihA
IjIiLCBOTywgQCJ0b2tlbjIiKTsNCisgICAgYXV0byB0b2tlbkIxID0gY3JlYXRlVGV4dE1hbmlw
dWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuQjIgPSBj
cmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7DQorDQorICAg
IGF1dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGlu
aXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkExLmdldCgpLCB0b2tlbkEyLmdl
dCgpIF1dKTsNCisgICAgYXV0byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQjEuZ2V0
KCksIHRva2VuQjIuZ2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVh
bFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFs
aXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxh
dGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAg
IEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsOml0ZW1CLmdldCgpXSk7DQorDQorICAgIFt0b2tl
bkIyIHNldENvbnRlbnQ6QCJzb21ldGhpbmcgZWxzZSJdOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxU
b1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpOT10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlzRXF1YWw6aXRlbUIuZ2V0KCldKTsN
Cit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbU5TT2Jq
ZWN0RXF1YWxpdHlXaXRoTm9uVG9rZW4pDQorew0KKyAgICBhdXRvIHRva2VuID0gY3JlYXRlVGV4
dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIGl0ZW0g
PSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRp
ZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbi5nZXQoKSBdXSk7DQorICAgIE5TU3RyaW5nICpzdHJp
bmcgPSBAImNvbnRlbnQiOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuIGlzRXF1YWw6c3Ry
aW5nXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW4gaXNFcXVhbDpuaWxdKTsNCit9DQorDQog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQ0KIA0K
</data>
<flag name="review"
          id="400441"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384654</attachid>
            <date>2019-12-02 13:43:32 -0800</date>
            <delta_ts>2019-12-02 14:31:06 -0800</delta_ts>
            <desc>57438200-part-3.patch</desc>
            <filename>file_204758.txt</filename>
            <type>text/plain</type>
            <size>38716</size>
            <attacher name="Louie Livon-Bemel">llivonbemel</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ5YjQ0MWRhNjNhMjE1N2NjNjc1MDM5MzgwYWM3NzdkMTkwYzFkYWINCkF1dGhvcjog
TG91aWUgTGl2b24tQmVtZWwgPGxsaXZvbmJlbWVsQGFwcGxlLmNvbT4NCkRhdGU6ICAgTW9uIERl
YyAyIDEwOjQ3OjM0IDIwMTkgLTA4MDANCg0KICAgIEFkZCBoZWxwZXIgbWV0aG9kcyBmb3IgZGVz
Y3JpcHRpb24gYW5kIGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQSQ0KICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ3NTgNCiAgICA8cmRhcjovL3By
b2JsZW0vNTc0MzgyMDA+DQoNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nDQppbmRleCA5ZjZlZmRlNTZjYy4uYWU0NzRlZjhmODcg
MTAwNjQ0DQotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZw0KKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cNCkBAIC0xLDMgKzEsNjEgQEANCisyMDE5LTEyLTAyICBMb3VpZSBMaXZvbi1C
ZW1lbCAgPGxsaXZvbmJlbWVsQGFwcGxlLmNvbT4NCisNCisgICAgICAgIEFkZCBoZWxwZXIgbWV0
aG9kcyBmb3IgZGVzY3JpcHRpb24gYW5kIGVxdWFsaXR5IHRvIHRleHQgbWFuaXB1bGF0aW9uIFNQ
SQ0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDc1
OA0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3NDM4MjAwPg0KKw0KKyAgICAgICAgUmV2aWV3
ZWQgYnkgV2Vuc29uIEhzaWVoLg0KKw0KKyAgICAgICAgSSBvcmlnaW5hbGx5IGFkZGVkIHNvbWUg
Y2F0ZWdvcnkgbWV0aG9kcyB0byBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbmQgX1dLVGV4dE1h
bmlwdWxhdGlvblRva2VuIHdpdGhpbiBTYWZhcmkNCisgICAgICAgIHRvIG1ha2Ugd29ya2luZyB3
aXRoIHRoZXNlIGNsYXNzZXMgZWFzaWVyLiBIb3dldmVyIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8g
anVzdCBtb3ZlIHRoZXNlIG1ldGhvZHMgaW50bw0KKyAgICAgICAgdGhlIG1haW4gY2xhc3MuIE9u
ZSBtZXRob2QgaXMgZm9yIGNoZWNraW5nIGlmIHR3byBpbnN0YW5jZXMgYXJlIGVxdWFsIChpbmNs
dWRpbmcgaWRlbnRpZmllcnMpIGFuZCBvcHRpb25hbGx5DQorICAgICAgICBjaGVja2luZyBpZiB0
aGUgY29udGVudCBpdHNlbGYgaXMgZXF1YWwuIFRoZSBvdGhlciBtZXRob2RzIGFyZSBmb3IgZGVi
dWcgZGVzY3JpcHRpb25zIGZvciBsbGRiLCBhbmQgYQ0KKyAgICAgICAgbWV0aG9kIHRvIGdldCBh
IGRlc2NyaXB0aW9uIHRoYXQgcHJlc2VydmVzIHByaXZhY3k7IHdoZW4gbG9nZ2luZyB0aGUgaW5z
dGFuY2UsIHRoZSBjb250ZW50IG9mIHRoZSB3ZWJwYWdlDQorICAgICAgICBzaG91bGQgYmUgcmVk
YWN0ZWQuDQorDQorICAgICAgICBUZXN0czogVGVzdHMgYXJlIGFkZGVkIGFzIEFQSSB0ZXN0cy4N
CisNCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bS5oOg0KKyAgICAgICAgICAgIC0gQXNzdW1lIGV2ZXJ5dGhpbmcgaXMgbm9uLW51bGwgdW5sZXNz
IG90aGVyd2lzZSBzcGVjaWZpZWQuDQorICAgICAgICAgICAgLSBBbGxvdyB0aGUgaWRlbnRpZmll
ciB0byBiZSBuaWwsIGJ1dCBub3QgdGhlIGFycmF5IG9mIHRva2Vucy4NCisgICAgICAgICAgICAt
IEFkZCBhIG1ldGhvZCB0byBjaGVjayB0aGUgZXF1YWxpdHkgdG8gYW5vdGhlciBpdGVtLCBvcHRp
b25hbGx5IGluY2x1ZGluZyBhIGNoZWNrIGZvciB0aGUgY29udGVudCBvZiBlYWNoDQorICAgICAg
ICAgICAgICB0b2tlbiBiZWluZyBlcXVhbC4NCisgICAgICAgICAgICAtIEFkZCBhIC1kZWJ1Z0Rl
c2NyaXB0aW9uIG1ldGhvZCB0aGF0IGluY2x1ZGVzIHRoZSBjb250ZW50IG9mIHRva2VucyBmb3Ig
dXNlIGluIGxsZGIuIFRoaXMgTlNPYmplY3QNCisgICAgICAgICAgICAgIGRlY2xhcmF0aW9uIGlz
IG1hcmtlZCBvcHRpb25hbCwgc28gcmVkZWNsYXJlIGl0IGhlcmUuDQorICAgICAgICAgICAgLSBO
byBuZWVkIHRvIGFkZCBhIC1kZXNjcmlwdGlvbiBkZWNsYXJhdGlvbiBzaW5jZSBpdCBleGlzdHMg
b24gTlNPYmplY3QgYWxyZWFkeS4NCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbS5tbToNCisgICAgICAgICgtW19XS1RleHRNYW5pcHVsYXRpb25J
dGVtIGlzRXF1YWw6XSk6DQorICAgICAgICAgICAgVGhlIHN0YW5kYXJkIE5TT2JqZWN0IGVxdWFs
aXR5IGNoZWNrIHNob3VsZCBjYWxsIG91ciBtZXRob2Qgd2l0aCBlcXVhbCBjb250ZW50Lg0KKyAg
ICAgICAgKC1bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlv
bkl0ZW06aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ol0pOg0KKyAgICAgICAgICAgIC0gSWYgdGhl
IG90aGVyIGl0ZW0gaXMgbmlsLCB0aGUgaWRlbnRpZmllcnMgYXJlbid0IGVxdWFsIG9yIHRoZSBu
dW1iZXIgb2YgdG9rZW5zIGFyZSBtaXNtYXRjaGVkLCB0aGVzZQ0KKyAgICAgICAgICAgICAgaXRl
bXMgYXJlbid0IGVxdWFsLg0KKyAgICAgICAgICAgIC0gSnVzdCB0byBiZSBzYWZlLCBvbmx5IGl0
ZXJhdGUgdGhlIHNtYWxsZXIgb2YgdGhlIHRva2VuIGFycmF5cyBzbyB3ZSBkb24ndCBjcmFzaC4N
CisgICAgICAgICAgICAtIENoZWNrIGlmIGVhY2ggdG9rZW4gaXMgZXF1YWwsIHBhc3NpbmcgYWxv
bmcgdGhlIGBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHlgIHBhcmFtZXRlci4NCisgICAgICAgICgt
W19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGRlc2NyaXB0aW9uXSk6DQorICAgICAgICAgICAgVGhl
IGdlbmVyYWwgZGVzY3JpcHRpb24gc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB3ZWJwYWdlIGNvbnRl
bnQuDQorICAgICAgICAoLVtfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBkZWJ1Z0Rlc2NyaXB0aW9u
XSk6DQorICAgICAgICAgICAgSW5jbHVkZSB0aGUgd2VicGFnZSBjb250ZW50LCBzaW5jZSB0aGlz
IGlzIGZvciBsbGRiLg0KKyAgICAgICAgKC1bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gX2Rlc2Ny
aXB0aW9uUHJlc2VydmluZ1ByaXZhY3k6XSk6DQorICAgICAgICAgICAgSW5jbHVkZSB0aGUgc3Rh
bmRhcmQgZGVzY3JpcHRpb24gZm9ybWF0LCBhbmQgZWFjaCB0b2tlbiBvbiBpdHMgb3duIGxpbmUu
IElmIHdlJ3JlIGluY2x1ZGluZyB0aGUgY29udGVudA0KKyAgICAgICAgICAgIHRoZW4gdXNlIGB0
b2tlbi5kZWJ1Z0Rlc2NyaXB0aW9uYC4NCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaDoNCisgICAgICAgICAgICAtIEFsc28gYXNzdW1lIGV2
ZXJ5dGhpbmcgaXMgbm9uLW51bGwuDQorICAgICAgICAgICAgLSBJZGVudGlmaWVyIGFuZCBDb250
ZW50IGNhbiBiZSBuaWwuDQorICAgICAgICAgICAgLSBEZWNsYXJlIGEgLWRlYnVnRGVzY3JpcHRp
b24gbWV0aG9kLg0KKyAgICAgICAgICAgIC0gRGVjbGFyZSBhIG1ldGhvZCB0byBjaGVjayBlcXVh
bGl0eSwgd2l0aCBvciB3aXRob3V0IHRoZSBjb250ZW50Lg0KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5tbToNCisgICAgICAgIChpc0VxdWFs
T3JCb3RoTmlsKToNCisgICAgICAgICAgICBIZWxwZXIgdGhhdCBjaGVja3MgZXF1YWxpdHkgYnV0
IGNvbnNpZGVycyB0d28gbmlsIHZhbHVlcyB0byBiZSBlcXVhbCBhcyB3ZWxsLg0KKyAgICAgICAg
KC1bX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGlzRXF1YWw6XSk6DQorICAgICAgICAgICAgVGhl
IHN0YW5kYXJkIE5TT2JqZWN0IGVxdWFsaXR5IGNoZWNrIHNob3VsZCBjYWxsIG91ciBtZXRob2Qg
d2l0aCBlcXVhbCBjb250ZW50Lg0KKyAgICAgICAgKC1bX1dLVGV4dE1hbmlwdWxhdGlvblRva2Vu
IGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjppbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6
XSk6DQorICAgICAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZXhjbHVzaW9ucyBhcmUgZXF1YWwsIHRo
ZSBpZGVudGlmaWVycyBhcmUgZXF1YWwgKGNvbnNpZGVyaW5nIHR3byBuaWxzIHRvIGJlIGVxdWFs
KSwgYW5kIHRoZQ0KKyAgICAgICAgICAgIGNvbnRlbnQgaWYgbmVjZXNzYXJ5Lg0KKyAgICAgICAg
KC1bX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGRlc2NyaXB0aW9uXSk6DQorICAgICAgICAoLVtf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gZGVidWdEZXNjcmlwdGlvbl0pOg0KKyAgICAgICAgKC1b
X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIF9kZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5Ol0p
Og0KKyAgICAgICAgICAgIElmIHdlJ3JlIHByZXNlcnZpbmcgcHJpdmFjeSwgbG9nIHRoZSBjb250
ZW50IGxlbmd0aCByYXRoZXIgdGhhbiB0aGUgY29udGVudCBzdHJpbmcgaXRzZWxmLg0KKw0KIDIw
MTktMTEtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4NCiANCiAgICAgICAgIFVu
cmV2aWV3ZWQsIGZpeCB3ZWJraXRweSBmYWlsdXJlcyBhZnRlciByMjUyNjU1Lg0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVs
YXRpb25JdGVtLmgNCmluZGV4IDQ0MWJiNmQ1OTc3Li41OWU2NWU1MmEyNSAxMDA2NDQNCi0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bS5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0uaA0KQEAgLTI5LDEzICsyOSwyMCBAQA0KIA0KIEBjbGFzcyBfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW47DQogDQorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4NCisNCiBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkNCiBAaW50ZXJm
YWNlIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtIDogTlNPYmplY3QNCiANCiAtIChpbnN0YW5jZXR5
cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsNCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlm
aWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgdG9rZW5zOihOU0FycmF5PF9XS1RleHRNYW5pcHVs
YXRpb25Ub2tlbiAqPiAqKXRva2VuczsNCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlm
aWVyOihudWxsYWJsZSBOU1N0cmluZyAqKWlkZW50aWZpZXIgdG9rZW5zOihOU0FycmF5PF9XS1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbiAqPiAqKXRva2VuczsNCiANCi1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICppZGVudGlmaWVyOw0KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICppZGVudGlmaWVyOw0K
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNBcnJheTxfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gKj4gKnRva2VuczsNCiANCistIChCT09MKWlzRXF1YWxUb1RleHRNYW5p
cHVsYXRpb25JdGVtOihudWxsYWJsZSBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKW90aGVySXRl
bSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6KEJPT0wpaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5
Ow0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRlYnVn
RGVzY3JpcHRpb247DQorDQogQGVuZA0KKw0KK05TX0FTU1VNRV9OT05OVUxMX0VORA0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFu
aXB1bGF0aW9uSXRlbS5tbQ0KaW5kZXggYjMzODg3NjUxNzQuLjgwZTcyOGFlNTM1IDEwMDY0NA0K
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRp
b25JdGVtLm1tDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW0ubW0NCkBAIC0yNiw2ICsyNiw3IEBADQogI2ltcG9ydCAiY29uZmln
LmgiDQogI2ltcG9ydCAiX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaCINCiANCisjaW1wb3J0ICJf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCINCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+DQog
DQogQGltcGxlbWVudGF0aW9uIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtIHsNCkBAIC01Myw0ICs1
NCw1OCBAQA0KICAgICByZXR1cm4gX3Rva2Vucy5nZXQoKTsNCiB9DQogDQorLSAoQk9PTClpc0Vx
dWFsOihpZClvYmplY3QNCit7DQorICAgIGlmIChzZWxmID09IG9iamVjdCkNCisgICAgICAgIHJl
dHVybiBZRVM7DQorDQorICAgIGlmICghW29iamVjdCBpc0tpbmRPZkNsYXNzOltzZWxmIGNsYXNz
XV0pDQorICAgICAgICByZXR1cm4gTk87DQorDQorICAgIHJldHVybiBbc2VsZiBpc0VxdWFsVG9U
ZXh0TWFuaXB1bGF0aW9uSXRlbTpvYmplY3QgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU107
DQorfQ0KKw0KKy0gKEJPT0wpaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06KF9XS1RleHRN
YW5pcHVsYXRpb25JdGVtICopb3RoZXJJdGVtIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTooQk9P
TClpbmNsdWRpbmdDb250ZW50RXF1YWxpdHkNCit7DQorICAgIGlmICghb3RoZXJJdGVtKQ0KKyAg
ICAgICAgcmV0dXJuIE5POw0KKw0KKyAgICBpZiAoIShzZWxmLmlkZW50aWZpZXIgPT0gb3RoZXJJ
dGVtLmlkZW50aWZpZXIgfHwgW3NlbGYuaWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6b3RoZXJJ
dGVtLmlkZW50aWZpZXJdKSB8fCBzZWxmLnRva2Vucy5jb3VudCAhPSBvdGhlckl0ZW0udG9rZW5z
LmNvdW50KQ0KKyAgICAgICAgcmV0dXJuIE5POw0KKw0KKyAgICBfX2Jsb2NrIEJPT0wgdG9rZW5z
QXJlRXF1YWwgPSBZRVM7DQorICAgIE5TVUludGVnZXIgY291bnQgPSBzdGQ6Om1pbihzZWxmLnRv
a2Vucy5jb3VudCwgb3RoZXJJdGVtLnRva2Vucy5jb3VudCk7DQorICAgIFtzZWxmLnRva2VucyBl
bnVtZXJhdGVPYmplY3RzQXRJbmRleGVzOltOU0luZGV4U2V0IGluZGV4U2V0V2l0aEluZGV4ZXNJ
blJhbmdlOk5TTWFrZVJhbmdlKDAsIGNvdW50KV0gb3B0aW9uczowIHVzaW5nQmxvY2s6XihfV0tU
ZXh0TWFuaXB1bGF0aW9uVG9rZW4gKnRva2VuLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9w
KSB7DQorICAgICAgICBfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKm90aGVyVG9rZW4gPSBvdGhl
ckl0ZW0udG9rZW5zW2luZGV4XTsNCisgICAgICAgIGlmICghW3Rva2VuIGlzRXF1YWxUb1RleHRN
YW5pcHVsYXRpb25Ub2tlbjpvdGhlclRva2VuIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTppbmNs
dWRpbmdDb250ZW50RXF1YWxpdHldKSB7DQorICAgICAgICAgICAgdG9rZW5zQXJlRXF1YWwgPSBO
TzsNCisgICAgICAgICAgICAqc3RvcCA9IFlFUzsNCisgICAgICAgIH0NCisgICAgfV07DQorDQor
ICAgIHJldHVybiB0b2tlbnNBcmVFcXVhbDsNCit9DQorDQorLSAoTlNTdHJpbmcgKilkZXNjcmlw
dGlvbg0KK3sNCisgICAgcmV0dXJuIFtzZWxmIF9kZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5
OllFU107DQorfQ0KKw0KKy0gKE5TU3RyaW5nICopZGVidWdEZXNjcmlwdGlvbg0KK3sNCisgICAg
cmV0dXJuIFtzZWxmIF9kZXNjcmlwdGlvblByZXNlcnZpbmdQcml2YWN5Ok5PXTsNCit9DQorDQor
LSAoTlNTdHJpbmcgKilfZGVzY3JpcHRpb25QcmVzZXJ2aW5nUHJpdmFjeTooQk9PTClwcmVzZXJ2
ZVByaXZhY3kNCit7DQorICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICpyZWN1cnNpdmVE
ZXNjcmlwdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOw0KKyAgICBbc2VsZi50b2tlbnMg
ZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKnRv
a2VuLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7DQorICAgICAgICBOU1N0cmluZyAq
ZGVzY3JpcHRpb24gPSBwcmVzZXJ2ZVByaXZhY3kgPyB0b2tlbi5kZXNjcmlwdGlvbiA6IHRva2Vu
LmRlYnVnRGVzY3JpcHRpb247DQorICAgICAgICBbcmVjdXJzaXZlRGVzY3JpcHRpb25zIGFkZE9i
amVjdDpkZXNjcmlwdGlvbl07DQorICAgIH1dOw0KKyAgICBOU1N0cmluZyAqdG9rZW5EZXNjcmlw
dGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiW1xuXHQlQFxuXSIsIFtyZWN1cnNp
dmVEZXNjcmlwdGlvbnMgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLFxuXHQiXV07DQorICAg
IE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVA
OiAlcDsgaWRlbnRpZmllciA9ICVAIHRva2VucyA9ICVAPiIsIHNlbGYuY2xhc3MsIHNlbGYsIHNl
bGYuaWRlbnRpZmllciwgdG9rZW5EZXNjcmlwdGlvbl07DQorICAgIHJldHVybiBkZXNjcmlwdGlv
bjsNCit9DQorDQogQGVuZA0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaA0KaW5kZXggNTIxMjlkNGY5
NjAuLjE5MDE2MWJhYmUzIDEwMDY0NA0KLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oDQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgNCkBAIC0yNywxMSAr
MjcsMTggQEANCiANCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4NCiANCitOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTg0KKw0KIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKQ0KIEBpbnRlcmZhY2UgX1dLVGV4dE1hbmlwdWxhdGlvblRv
a2VuIDogTlNPYmplY3QNCiANCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcg
KmlkZW50aWZpZXI7DQotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpjb250
ZW50Ow0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmlk
ZW50aWZpZXI7DQorQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmlu
ZyAqY29udGVudDsNCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzRXhjbHVkZWQpIEJP
T0wgZXhjbHVkZWQ7DQogDQorLSAoQk9PTClpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46
KG51bGxhYmxlIF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqKW90aGVyVG9rZW4gaW5jbHVkaW5n
Q29udGVudEVxdWFsaXR5OihCT09MKWluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTsNCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICpkZWJ1Z0Rlc2NyaXB0aW9u
Ow0KKw0KIEBlbmQNCisNCitOU19BU1NVTUVfTk9OTlVMTF9FTkQNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25U
b2tlbi5tbQ0KaW5kZXggM2ZjYzRlOTIwOWEuLjkyNjNiOGY0MDZjIDEwMDY0NA0KLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5t
bQ0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVs
YXRpb25Ub2tlbi5tbQ0KQEAgLTI3LDQgKzI3LDU5IEBADQogI2ltcG9ydCAiX1dLVGV4dE1hbmlw
dWxhdGlvblRva2VuLmgiDQogDQogQGltcGxlbWVudGF0aW9uIF9XS1RleHRNYW5pcHVsYXRpb25U
b2tlbg0KKw0KK3N0YXRpYyBCT09MIGlzRXF1YWxPckJvdGhOaWwoaWQgYSwgaWQgYikNCit7DQor
ICAgIGlmIChhID09IGIpDQorICAgICAgICByZXR1cm4gWUVTOw0KKw0KKyAgICByZXR1cm4gW2Eg
aXNFcXVhbDpiXTsNCit9DQorDQorLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QNCit7DQorICAg
IGlmIChzZWxmID09IG9iamVjdCkNCisgICAgICAgIHJldHVybiBZRVM7DQorDQorICAgIGlmICgh
W29iamVjdCBpc0tpbmRPZkNsYXNzOltzZWxmIGNsYXNzXV0pDQorICAgICAgICByZXR1cm4gTk87
DQorDQorICAgIHJldHVybiBbc2VsZiBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46b2Jq
ZWN0IGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdOw0KK30NCisNCistIChCT09MKWlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjooX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICopb3Ro
ZXJUb2tlbiBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6KEJPT0wpaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5DQorew0KKyAgICBpZiAoIW90aGVyVG9rZW4pDQorICAgICAgICByZXR1cm4gTk87DQor
DQorICAgIEJPT0wgZXF1YWxJZGVudGlmaWVycyA9IGlzRXF1YWxPckJvdGhOaWwoc2VsZi5pZGVu
dGlmaWVyLCBvdGhlclRva2VuLmlkZW50aWZpZXIpOw0KKyAgICBCT09MIGVxdWFsRXhjbHVzaW9u
ID0gc2VsZi5pc0V4Y2x1ZGVkID09IG90aGVyVG9rZW4uaXNFeGNsdWRlZDsNCisgICAgQk9PTCBl
cXVhbENvbnRlbnQgPSAhaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5IHx8IGlzRXF1YWxPckJvdGhO
aWwoc2VsZi5jb250ZW50LCBvdGhlclRva2VuLmNvbnRlbnQpOw0KKw0KKyAgICByZXR1cm4gZXF1
YWxJZGVudGlmaWVycyAmJiBlcXVhbEV4Y2x1c2lvbiAmJiBlcXVhbENvbnRlbnQ7DQorfQ0KKw0K
Ky0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24NCit7DQorICAgIHJldHVybiBbc2VsZiBfZGVzY3Jp
cHRpb25QcmVzZXJ2aW5nUHJpdmFjeTpZRVNdOw0KK30NCisNCistIChOU1N0cmluZyAqKWRlYnVn
RGVzY3JpcHRpb24NCit7DQorICAgIHJldHVybiBbc2VsZiBfZGVzY3JpcHRpb25QcmVzZXJ2aW5n
UHJpdmFjeTpOT107DQorfQ0KKw0KKy0gKE5TU3RyaW5nICopX2Rlc2NyaXB0aW9uUHJlc2Vydmlu
Z1ByaXZhY3k6KEJPT0wpcHJlc2VydmVQcml2YWN5DQorew0KKyAgICBOU011dGFibGVTdHJpbmcg
KmRlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAl
cDsgaWRlbnRpZmllciA9ICVAOyBpc0V4Y2x1ZGVkID0gJWkiLCBzZWxmLmNsYXNzLCBzZWxmLCBz
ZWxmLmlkZW50aWZpZXIsIHNlbGYuaXNFeGNsdWRlZF07DQorICAgIGlmIChwcmVzZXJ2ZVByaXZh
Y3kpDQorICAgICAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiOyBjb250ZW50IGxlbmd0
aCA9ICVsdSIsICh1bnNpZ25lZCBsb25nKXNlbGYuY29udGVudC5sZW5ndGhdOw0KKyAgICBlbHNl
DQorICAgICAgICBbZGVzY3JpcHRpb24gYXBwZW5kRm9ybWF0OkAiOyBjb250ZW50ID0gJUAiLCBz
ZWxmLmNvbnRlbnRdOw0KKw0KKyAgICBbZGVzY3JpcHRpb24gYXBwZW5kU3RyaW5nOkAiPiJdOw0K
Kw0KKyAgICByZXR1cm4gW1tkZXNjcmlwdGlvbiBjb3B5XSBhdXRvcmVsZWFzZV07DQorfQ0KKw0K
IEBlbmQNCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cNCmlu
ZGV4IDdjYWNjN2MxZjRhLi5jMDgyNGY4ZTZmMSAxMDA2NDQNCi0tLSBhL1Rvb2xzL0NoYW5nZUxv
Zw0KKysrIGIvVG9vbHMvQ2hhbmdlTG9nDQpAQCAtMSwzICsxLDIyIEBADQorMjAxOS0xMi0wMiAg
TG91aWUgTGl2b24tQmVtZWwgIDxsbGl2b25iZW1lbEBhcHBsZS5jb20+DQorDQorICAgICAgICBB
ZGQgaGVscGVyIG1ldGhvZHMgZm9yIGRlc2NyaXB0aW9uIGFuZCBlcXVhbGl0eSB0byB0ZXh0IG1h
bmlwdWxhdGlvbiBTUEkNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQ3NTgNCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzQzODIwMD4NCisNCisg
ICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4NCisNCisgICAgICAgIEFkZCB0ZXN0cyBm
b3IgdGhlIG5ldyBtZXRob2RzLiBNb3N0IGFyZSBlcXVhbGl0eSB0ZXN0cyBmb3IgdmFyaW91cyBz
aXR1YXRpb25zLCBhbmQgYXJlIG1vdmVkIG92ZXIgZnJvbSB0aGUNCisgICAgICAgIFNhZmFyaSB1
bml0IHRlc3RzIEkgaGFkIGZvciB0aGUgY2F0ZWdvcnkgbWV0aG9kcyB0aGF0IGhhZCB0aGUgc2Ft
ZSBwdXJwb3NlLg0KKw0KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1RleHRNYW5pcHVsYXRpb24ubW06DQorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6DQor
ICAgICAgICAgICAgLSBBZGQgdGVzdCB0byBtYWtlIHN1cmUgdGhlIGNvbnRlbnQgaXNuJ3QgaW5j
bHVkZWQgaW4gdGhlIHJlZ3VsYXIgLWRlc2NyaXB0aW9uLCBidXQgdGhlIGlkZW50aWZpZXIgaXMu
IEFuZA0KKyAgICAgICAgICAgICAgVGhhdCAtZGVidWdEZXNjcmlwdGlvbiBkb2VzIGluY2x1ZGUg
dGhlIGNvbnRlbnRzLg0KKyAgICAgICAgICAgIC0gQWRkIG1hbnkgdGVzdHMgZXF1YWxpdHkgZm9y
IHZhcmlvdXMgc2l0dWF0aW9ucywgdGVzdGluZyBib3RoIHdpdGggYW5kIHdpdGhvdXQgY29udGVu
dCBlcXVhbGl0eS4NCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVUZXh0TWFuaXB1bGF0
aW9uVG9rZW4pOg0KKyAgICAgICAgICAgIEFkZCBhIGhlbHBlciBmb3IgY3JlYXRpbmcgYSB0b2tl
biBpbiBvbmUgbGluZS4NCisNCiAyMDE5LTExLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPg0KIA0KICAgICAgICAgUmVtb3ZlIHJ1bk51bGxpc2hBd2FyZU9wZXJhdG9yc0VuYWJs
ZWQNCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
eHRNYW5pcHVsYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1RleHRNYW5pcHVsYXRpb24ubW0NCmluZGV4IGM2MmNlMDY2NWY2Li5lYTQ4Mzg3OTYwYyAxMDA2
NDQNCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlw
dWxhdGlvbi5tbQ0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXh0TWFuaXB1bGF0aW9uLm1tDQpAQCAtNDI0LDUgKzQyNCw0OTUgQEAgVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkV4Y2x1c2lvbklzVmlvbGF0
ZWQpDQogICAgIEVYUEVDVF9XS19TVFJFUSgiPHA+aGksIDxlbT5XZWJLaXR0ZW48L2VtPjwvcD4i
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5p
bm5lckhUTUwiXSk7DQogfQ0KIA0KKy8vIE1BUks6IC0gX1dLVGV4dE1hbmlwdWxhdGlvblRva2Vu
IFRlc3RzDQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5E
ZWJ1Z0Rlc2NyaXB0aW9uKQ0KK3sNCisgICAgYXV0byB0b2tlbiA9IGFkb3B0TlMoW1tfV0tUZXh0
TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuIHNldElkZW50aWZp
ZXI6QCJmb29faXNfdGhlX2lkZW50aWZpZXIiXTsNCisgICAgW3Rva2VuIHNldENvbnRlbnQ6QCJi
YXJfaXNfdGhlX2NvbnRlbnQiXTsNCisNCisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gW3Rv
a2VuIGRlc2NyaXB0aW9uXTsNCisgICAgRVhQRUNUX1RSVUUoW2Rlc2NyaXB0aW9uIGNvbnRhaW5z
U3RyaW5nOkAiZm9vX2lzX3RoZV9pZGVudGlmaWVyIl0pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2Rl
c2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAiYmFyX2lzX3RoZV9jb250ZW50Il0pOw0KKw0KKyAg
ICBOU1N0cmluZyAqZGVidWdEZXNjcmlwdGlvbiA9IFt0b2tlbiBkZWJ1Z0Rlc2NyaXB0aW9uXTsN
CisgICAgRVhQRUNUX1RSVUUoW2RlYnVnRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJmb29f
aXNfdGhlX2lkZW50aWZpZXIiXSk7DQorICAgIEVYUEVDVF9UUlVFKFtkZWJ1Z0Rlc2NyaXB0aW9u
IGNvbnRhaW5zU3RyaW5nOkAiYmFyX2lzX3RoZV9jb250ZW50Il0pOw0KK30NCisNCitURVNUKFRl
eHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbk5vdEVxdWFsVG9OaWwpDQorew0K
KyAgICBhdXRvIHRva2VuQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxs
b2NdIGluaXRdKTsNCisgICAgW3Rva2VuQSBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9r
ZW5BIHNldENvbnRlbnQ6QCJBIl07DQorDQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjpuaWwgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllF
U10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9u
VG9rZW46bmlsIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICBbdG9rZW5B
IHNldElkZW50aWZpZXI6bmlsXTsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50Om5pbF07DQorICAg
IEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjpuaWwg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2Vu
QSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46bmlsIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRp
b25Ub2tlbkVxdWFsaXR5V2l0aEVxdWFsSWRlbnRpZmllcnMpDQorew0KKyAgICBhdXRvIHRva2Vu
MSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisg
ICAgW3Rva2VuMSBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBhdXRvIHRva2VuMiA9IGFkb3B0
TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2Vu
MiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW4xIGlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbjIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW4xIGlzRXF1YWxUb1RleHRNYW5p
cHVsYXRpb25Ub2tlbjp0b2tlbjIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7
DQorDQorICAgIC8vIFNhbWUgaWRlbnRpZmllcnMsIGRpZmZlcmVudCBjb250ZW50Lg0KKyAgICBb
dG9rZW4xIHNldENvbnRlbnQ6QCIxIl07DQorICAgIFt0b2tlbjIgc2V0Q29udGVudDpAIjIiXTsN
CisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbjEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2Vu
OnRva2VuMi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbjEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuMi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gU2FtZSBpZGVudGlm
aWVycywgZGlmZmVyZW50IGV4Y2x1c2lvbi4NCisgICAgW3Rva2VuMSBzZXRFeGNsdWRlZDpOT107
DQorICAgIFt0b2tlbjIgc2V0RXhjbHVkZWQ6WUVTXTsNCisgICAgW3Rva2VuMSBzZXRDb250ZW50
Om5pbF07DQorICAgIFt0b2tlbjIgc2V0Q29udGVudDpuaWxdOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W3Rva2VuMSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbjEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuMi5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gU2FtZSBpZGVudGlmaWVycywgZGlmZmVyZW50IGV4
Y2x1c2lvbiBhbmQgZGlmZmVyZW50IGNvbnRlbnQuDQorICAgIFt0b2tlbjEgc2V0Q29udGVudDpA
IjEiXTsNCisgICAgW3Rva2VuMiBzZXRDb250ZW50OkAiMiJdOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W3Rva2VuMSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW4yLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbjEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuMi5nZXQoKSBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1
bGF0aW9uVG9rZW5FcXVhbGl0eVdpdGhEaWZmZXJlbnRJZGVudGlmaWVycykNCit7DQorICAgIGF1
dG8gdG9rZW5BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5p
dF0pOw0KKyAgICBbdG9rZW5BIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIGF1dG8gdG9rZW5C
ID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAg
ICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJCIl07DQorDQorICAgIEVYUEVDVF9GQUxTRShbdG9r
ZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5n
Q29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFs
VG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpOT10pOw0KKw0KKyAgICAvLyBEaWZmZXJlbnQgaWRlbnRpZmllcnMsIHNhbWUgY29udGVu
dC4NCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBbdG9rZW5CIHNl
dENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxU
b1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFs
aXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1
bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0K
Kw0KKyAgICAvLyBEaWZmZXJlbnQgaWRlbnRpZmllcnMsIHNhbWUgZXhjbHVzaW9uLg0KKyAgICBb
dG9rZW5BIHNldENvbnRlbnQ6bmlsXTsNCisgICAgW3Rva2VuQiBzZXRDb250ZW50Om5pbF07DQor
ICAgIFt0b2tlbkEgc2V0RXhjbHVkZWQ6WUVTXTsNCisgICAgW3Rva2VuQiBzZXRFeGNsdWRlZDpZ
RVNdOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9u
VG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAg
RVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2Vu
Qi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRGlmZmVy
ZW50IGlkZW50aWZpZXJzLCBzYW1lIGNvbnRlbnQgYW5kIHNhbWUgZXhjbHVzaW9uLg0KKyAgICBb
dG9rZW5BIHNldENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpA
ImNvbnRlbnQiXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlw
dWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7
DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tl
bjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RF
U1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuRXF1YWxpdHlXaXRoTmls
SWRlbnRpZmllcnMpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgRVhQRUNUX05VTEwoW3Rva2VuQSBp
ZGVudGlmaWVyXSk7DQorICAgIGF1dG8gdG9rZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVs
YXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJC
Il07DQorICAgIGF1dG8gdG9rZW5DID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tl
biBhbGxvY10gaW5pdF0pOw0KKyAgICBFWFBFQ1RfTlVMTChbdG9rZW5DIGlkZW50aWZpZXJdKTsN
CisNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRv
a2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVY
UEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIu
Z2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0
b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRp
bmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVh
bFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1
YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRXF1YWwgY29udGVudC4NCisgICAgW3Rva2VuQSBzZXRD
b250ZW50OkAiY29udGVudCJdOw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCJjb250ZW50Il07
DQorICAgIFt0b2tlbkMgc2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAgRVhQRUNUX0ZBTFNF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVu
dEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1h
bmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRv
a2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAg
Ly8gRGlmZmVyZW50IGNvbnRlbnQuDQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpAImNvbnRlbnRB
Il07DQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAImNvbnRlbnRCIl07DQorICAgIFt0b2tlbkMg
c2V0Q29udGVudDpAImNvbnRlbnRDIl07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1
YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10p
Ow0KKyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9r
ZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQ
RUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdl
dCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5p
cHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbkVxdWFsaXR5V2l0aEVtcHR5SWRlbnRpZmll
cnMpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9u
VG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuQSBzZXRJZGVudGlmaWVyOkAiIl07DQor
ICAgIGF1dG8gdG9rZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxv
Y10gaW5pdF0pOw0KKyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJCIl07DQorICAgIGF1dG8g
dG9rZW5DID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0p
Ow0KKyAgICBbdG9rZW5DIHNldElkZW50aWZpZXI6QCIiXTsNCisNCisgICAgRVhQRUNUX0ZBTFNF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVu
dEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1h
bmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRv
a2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAg
Ly8gRXF1YWwgY29udGVudC4NCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0K
KyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCJjb250ZW50Il07DQorICAgIFt0b2tlbkMgc2V0Q29u
dGVudDpAImNvbnRlbnQiXTsNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4
dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6
WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRp
b25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAg
IEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2Vu
Qy5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVF
KFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNs
dWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgLy8gRGlmZmVyZW50IGNvbnRlbnQu
DQorICAgIFt0b2tlbkEgc2V0Q29udGVudDpAImNvbnRlbnRBIl07DQorICAgIFt0b2tlbkIgc2V0
Q29udGVudDpAImNvbnRlbnRCIl07DQorICAgIFt0b2tlbkMgc2V0Q29udGVudDpAImNvbnRlbnRD
Il07DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25U
b2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBF
WFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5C
LmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0Vx
dWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5DLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRF
cXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVs
YXRpb25Ub2tlbldpdGhOaWxDb250ZW50KQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5T
KFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEg
c2V0SWRlbnRpZmllcjpAIkEiXTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkIgc2V0SWRlbnRp
ZmllcjpAIkEiXTsNCisNCisgICAgRVhQRUNUX05VTEwoW3Rva2VuQSBjb250ZW50XSk7DQorICAg
IEVYUEVDVF9OVUxMKFt0b2tlbkIgY29udGVudF0pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5B
IGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29u
dGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbdG9rZW5BIGlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5
Ok5PXSk7DQorDQorICAgIFt0b2tlbkIgc2V0Q29udGVudDpAIiJdOw0KKyAgICBFWFBFQ1RfRkFM
U0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGlu
Y2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBp
c0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRl
bnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCJCIl07DQorICAg
IEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tl
bkIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJV
RShbdG9rZW5BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25Ub2tlbjp0b2tlbkIuZ2V0KCkgaW5j
bHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlv
biwgVGV4dE1hbmlwdWxhdGlvblRva2VuV2l0aEVtcHR5Q29udGVudCkNCit7DQorICAgIGF1dG8g
dG9rZW5BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0p
Ow0KKyAgICBbdG9rZW5BIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIFt0b2tlbkEgc2V0Q29u
dGVudDpAIiJdOw0KKyAgICBhdXRvIHRva2VuQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0
aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuQiBzZXRJZGVudGlmaWVyOkAiQSJd
Ow0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCIiXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rv
a2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuQSBpc0VxdWFs
VG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVh
bGl0eTpOT10pOw0KKw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6bmlsXTsNCisgICAgRVhQRUNU
X0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tl
bkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQoKSBpbmNsdWRpbmdD
b250ZW50RXF1YWxpdHk6Tk9dKTsNCisNCisgICAgW3Rva2VuQiBzZXRDb250ZW50OkAiQiJdOw0K
KyAgICBFWFBFQ1RfRkFMU0UoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46
dG9rZW5CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNU
X1RSVUUoW3Rva2VuQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9rZW46dG9rZW5CLmdldCgp
IGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVs
YXRpb24sIFRleHRNYW5pcHVsYXRpb25Ub2tlbldpdGhJZGVudGljYWxDb250ZW50KQ0KK3sNCisg
ICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9j
XSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpAIkEiXTsNCisgICAgW3Rva2Vu
QSBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBhdXRvIHRva2VuQiA9IGFkb3B0TlMoW1tf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisgICAgW3Rva2VuQiBzZXRJ
ZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6QCJjb250ZW50Il07DQor
DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2Vu
OnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5XaXRoUG9pbnRlckVxdWFsQ29udGVudCkNCit7
DQorICAgIGF1dG8gdG9rZW5BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBh
bGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5BIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIGF1
dG8gdG9rZW5CID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5p
dF0pOw0KKyAgICBbdG9rZW5CIHNldElkZW50aWZpZXI6QCJBIl07DQorDQorICAgIE5TU3RyaW5n
ICpjb250ZW50U3RyaW5nID0gQCJjb250ZW50IjsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50OmNv
bnRlbnRTdHJpbmddOw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6Y29udGVudFN0cmluZ107DQor
DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2Vu
OnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5XaXRoVHJhaWxpbmdTcGFjZSkNCit7DQorICAg
IGF1dG8gdG9rZW5BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10g
aW5pdF0pOw0KKyAgICBbdG9rZW5BIHNldElkZW50aWZpZXI6QCJBIl07DQorICAgIFt0b2tlbkEg
c2V0Q29udGVudDpAImNvbnRlbnQiXTsNCisgICAgYXV0byB0b2tlbkIgPSBhZG9wdE5TKFtbX1dL
VGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkIgc2V0SWRl
bnRpZmllcjpAIkEiXTsNCisgICAgW3Rva2VuQiBzZXRDb250ZW50OkAiY29udGVudCAiXTsNCisN
CisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2Vu
OnRva2VuQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uVG9rZW5FcXVhbFRvU2VsZikNCit7DQorICAgIGF1dG8g
dG9rZW4gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7
DQorICAgIFt0b2tlbiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW4gc2V0Q29udGVu
dDpAImNvbnRlbnQiXTsNCisNCisgICAgRVhQRUNUX1RSVUUoW3Rva2VuIGlzRXF1YWxUb1RleHRN
YW5pcHVsYXRpb25Ub2tlbjp0b2tlbi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tlbiBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uVG9r
ZW46dG9rZW4uZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbiBpc0VxdWFsOnRva2VuLmdldCgpXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1h
bmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvblRva2VuTlNPYmplY3RFcXVhbGl0eVdpdGhPdGhl
clRva2VuKQ0KK3sNCisgICAgYXV0byB0b2tlbkEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxh
dGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQorICAgIFt0b2tlbkEgc2V0SWRlbnRpZmllcjpAIkEi
XTsNCisgICAgW3Rva2VuQSBzZXRDb250ZW50OkAiY29udGVudCJdOw0KKyAgICBhdXRvIHRva2Vu
QiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsNCisg
ICAgW3Rva2VuQiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW5CIHNldENvbnRlbnQ6
QCJjb250ZW50Il07DQorICAgIGF1dG8gdG9rZW5DID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVs
YXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBbdG9rZW5DIHNldElkZW50aWZpZXI6QCJB
Il07DQorICAgIFt0b2tlbkMgc2V0Q29udGVudDpAImNvbnRlbnQgIl07DQorDQorICAgIEVYUEVD
VF9UUlVFKFt0b2tlbkEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQi5nZXQo
KSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9UUlVFKFt0b2tl
bkEgaXNFcXVhbDp0b2tlbkIuZ2V0KCldKTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbkEg
aXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvblRva2VuOnRva2VuQy5nZXQoKSBpbmNsdWRpbmdDb250
ZW50RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbdG9rZW5BIGlzRXF1YWw6dG9r
ZW5DLmdldCgpXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxh
dGlvblRva2VuTlNPYmplY3RFcXVhbGl0eVdpdGhOb25Ub2tlbikNCit7DQorICAgIGF1dG8gdG9r
ZW4gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuIGFsbG9jXSBpbml0XSk7DQor
ICAgIFt0b2tlbiBzZXRJZGVudGlmaWVyOkAiQSJdOw0KKyAgICBbdG9rZW4gc2V0Q29udGVudDpA
ImNvbnRlbnQiXTsNCisgICAgTlNTdHJpbmcgKnN0cmluZyA9IEAiY29udGVudCI7DQorDQorICAg
IEVYUEVDVF9GQUxTRShbdG9rZW4gaXNFcXVhbDpzdHJpbmddKTsNCisgICAgRVhQRUNUX0ZBTFNF
KFt0b2tlbiBpc0VxdWFsOm5pbF0pOw0KK30NCisNCisvLyBNQVJLOiAtIF9XS1RleHRNYW5pcHVs
YXRpb25JdGVtIFRlc3RzDQorDQorc3RhdGljIFJldGFpblB0cjxfV0tUZXh0TWFuaXB1bGF0aW9u
VG9rZW4+IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihOU1N0cmluZyAqaWRlbnRpZmllciwg
Qk9PTCBleGNsdWRlZCwgTlNTdHJpbmcgKmNvbnRlbnQpDQorew0KKyAgICBhdXRvIHRva2VuID0g
YWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOw0KKyAgICBb
dG9rZW4gc2V0SWRlbnRpZmllcjppZGVudGlmaWVyXTsNCisgICAgW3Rva2VuIHNldEV4Y2x1ZGVk
OmV4Y2x1ZGVkXTsNCisgICAgW3Rva2VuIHNldENvbnRlbnQ6Y29udGVudF07DQorICAgIHJldHVy
biB0b2tlbjsNCit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9u
SXRlbURlYnVnRGVzY3JpcHRpb24pDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGNyZWF0ZVRleHRN
YW5pcHVsYXRpb25Ub2tlbihAInB1YmxpY19pZGVudGlmaWVyX0EiLCBOTywgQCJwcml2YXRlX2Nv
bnRlbnRfQSIpOw0KKyAgICBhdXRvIHRva2VuQiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tl
bihAInB1YmxpY19pZGVudGlmaWVyX0IiLCBOTywgQCJwcml2YXRlX2NvbnRlbnRfQiIpOw0KKyAg
ICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGlu
aXRXaXRoSWRlbnRpZmllcjpAInB1YmxpY19pdGVtX2lkZW50aWZpZXIiIHRva2VuczpAWyB0b2tl
bkEuZ2V0KCksIHRva2VuQi5nZXQoKSBdXSk7DQorDQorICAgIE5TU3RyaW5nICpkZWJ1Z0Rlc2Ny
aXB0aW9uID0gW2l0ZW0gZGVidWdEZXNjcmlwdGlvbl07DQorICAgIEVYUEVDVF9UUlVFKFtkZWJ1
Z0Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHVibGljX2lkZW50aWZpZXJfQSJdKTsNCisg
ICAgRVhQRUNUX1RSVUUoW2RlYnVnRGVzY3JpcHRpb24gY29udGFpbnNTdHJpbmc6QCJwdWJsaWNf
aWRlbnRpZmllcl9CIl0pOw0KKyAgICBFWFBFQ1RfVFJVRShbZGVidWdEZXNjcmlwdGlvbiBjb250
YWluc1N0cmluZzpAInByaXZhdGVfY29udGVudF9BIl0pOw0KKyAgICBFWFBFQ1RfVFJVRShbZGVi
dWdEZXNjcmlwdGlvbiBjb250YWluc1N0cmluZzpAInByaXZhdGVfY29udGVudF9CIl0pOw0KKyAg
ICBFWFBFQ1RfVFJVRShbZGVidWdEZXNjcmlwdGlvbiBjb250YWluc1N0cmluZzpAInB1YmxpY19p
dGVtX2lkZW50aWZpZXIiXSk7DQorDQorICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IFtpdGVt
IGRlc2NyaXB0aW9uXTsNCisgICAgRVhQRUNUX1RSVUUoW2Rlc2NyaXB0aW9uIGNvbnRhaW5zU3Ry
aW5nOkAicHVibGljX2lkZW50aWZpZXJfQSJdKTsNCisgICAgRVhQRUNUX1RSVUUoW2Rlc2NyaXB0
aW9uIGNvbnRhaW5zU3RyaW5nOkAicHVibGljX2lkZW50aWZpZXJfQiJdKTsNCisgICAgRVhQRUNU
X0ZBTFNFKFtkZXNjcmlwdGlvbiBjb250YWluc1N0cmluZzpAInByaXZhdGVfY29udGVudF9BIl0p
Ow0KKyAgICBFWFBFQ1RfRkFMU0UoW2Rlc2NyaXB0aW9uIGNvbnRhaW5zU3RyaW5nOkAicHJpdmF0
ZV9jb250ZW50X0IiXSk7DQorICAgIEVYUEVDVF9UUlVFKFtkZXNjcmlwdGlvbiBjb250YWluc1N0
cmluZzpAInB1YmxpY19pdGVtX2lkZW50aWZpZXIiXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlw
dWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcXVhbGl0eVRvTmlsSXRlbSkNCit7DQorICAg
IGF1dG8gaXRlbSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5p
dFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIF1dKTsNCisNCisgICAgRVhQRUNUX0ZBTFNF
KFtpdGVtIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOm5pbCBpbmNsdWRpbmdDb250ZW50
RXF1YWxpdHk6WUVTXSk7DQorICAgIEVYUEVDVF9GQUxTRShbaXRlbSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uSXRlbTpuaWwgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0K
K1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcXVhbGl0eVRvU2Vs
ZikNCit7DQorICAgIGF1dG8gdG9rZW4gPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCJB
IiwgTk8sIEAidG9rZW4iKTsNCisgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW19XS1RleHRNYW5p
cHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJCIiB0b2tlbnM6QFsgdG9r
ZW4uZ2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uSXRlbTppdGVtLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsN
CisgICAgRVhQRUNUX1RSVUUoW2l0ZW0gaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRl
bS5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisgICAgRVhQRUNUX1RSVUUo
W2l0ZW0gaXNFcXVhbDppdGVtLmdldCgpXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlv
biwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1CYXNpY0VxdWFsaXR5KQ0KK3sNCisgICAgYXV0byB0b2tl
bjEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQor
ICAgIGF1dG8gdG9rZW4yID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBA
InRva2VuMSIpOw0KKyAgICBhdXRvIGl0ZW1BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRp
b25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW4xLmdl
dCgpIF1dKTsNCisgICAgYXV0byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuMi5nZXQo
KSBdXSk7DQorDQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0
aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVTXSk7DQorICAg
IEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5n
ZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQorVEVTVChUZXh0TWFu
aXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUJhc2ljRXF1YWxpdHlXaXRoTXVsdGlwbGVU
b2tlbnMpDQorew0KKyAgICBhdXRvIHRva2VuQTEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9r
ZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQorICAgIGF1dG8gdG9rZW5BMiA9IGNyZWF0ZVRleHRN
YW5pcHVsYXRpb25Ub2tlbihAIjIiLCBOTywgQCJ0b2tlbjIiKTsNCisgICAgYXV0byB0b2tlbkIx
ID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAg
ICBhdXRvIHRva2VuQjIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAi
dG9rZW4yIik7DQorDQorICAgIGF1dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkEx
LmdldCgpLCB0b2tlbkEyLmdldCgpIF1dKTsNCisgICAgYXV0byBpdGVtQiA9IGFkb3B0TlMoW1tf
V0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9r
ZW5zOkBbIHRva2VuQjEuZ2V0KCksIHRva2VuQjIuZ2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1Rf
VFJVRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5j
bHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNF
cXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVx
dWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxh
dGlvbkl0ZW1FcXVhbGl0eVNpbWlsYXJUb2tlbnNXaXRoRGlmZmVyZW50Q29udGVudCkNCit7DQor
ICAgIGF1dG8gdG9rZW4xID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBA
InRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tl
bihAIjEiLCBOTywgQCJ0b2tlbjIiKTsNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5z
OkBbIHRva2VuMS5nZXQoKSBdXSk7DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2VuczpA
WyB0b2tlbjIuZ2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlzRXF1YWxU
b1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0
eTpZRVNdKTsNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRp
b25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisN
CitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRleHRNYW5pcHVsYXRpb25JdGVtRXF1YWxpdHlXaXRo
T3V0T2ZPcmRlclRva2VucykNCit7DQorICAgIGF1dG8gdG9rZW5BMSA9IGNyZWF0ZVRleHRNYW5p
cHVsYXRpb25Ub2tlbihAIjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbkEyID0g
Y3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKyAgICBh
dXRvIHRva2VuQjEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9r
ZW4xIik7DQorICAgIGF1dG8gdG9rZW5CMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihA
IjIiLCBOTywgQCJ0b2tlbjIiKTsNCisNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5z
OkBbIHRva2VuQTEuZ2V0KCksIHRva2VuQTIuZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1CID0g
YWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZp
ZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5CMi5nZXQoKSwgdG9rZW5CMS5nZXQoKSBdXSk7DQorDQor
ICAgIEVYUEVDVF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRl
bUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFM
U0UoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1
ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24s
IFRleHRNYW5pcHVsYXRpb25JdGVtRXF1YWxpdHlXaXRoUG9pbnRlckVxdWFsVG9rZW5zKQ0KK3sN
CisgICAgYXV0byB0b2tlbjEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8s
IEAidG9rZW4xIik7DQorICAgIGF1dG8gdG9rZW4yID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRv
a2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKw0KKyAgICBhdXRvIGl0ZW1BID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0
b2tlbnM6QFsgdG9rZW4xLmdldCgpLCB0b2tlbjIuZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1C
ID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50
aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW4xLmdldCgpLCB0b2tlbjIuZ2V0KCkgXV0pOw0KKw0K
KyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRl
bUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJV
RShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVk
aW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwg
VGV4dE1hbmlwdWxhdGlvbkl0ZW1FcXVhbGl0eVdpdGhQb2ludGVyRXF1YWxUb2tlbkFycmF5cykN
Cit7DQorICAgIGF1dG8gdG9rZW4xID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIs
IE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRva2VuMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRp
b25Ub2tlbihAIjIiLCBOTywgQCJ0b2tlbjIiKTsNCisgICAgTlNBcnJheTxfV0tUZXh0TWFuaXB1
bGF0aW9uVG9rZW4gKj4gKnRva2VucyA9IEBbIHRva2VuMS5nZXQoKSwgdG9rZW4yLmdldCgpIF07
DQorDQorICAgIGF1dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
YWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRva2Vuczp0b2tlbnNdKTsNCisgICAgYXV0
byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdp
dGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOnRva2Vuc10pOw0KKw0KKyAgICBFWFBFQ1RfVFJVRShb
aXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5n
Q29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVhbFRv
VGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5
Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcXVhbGl0eVdpdGhNaXNtYXRjaGVkVG9rZW5Db3VudHMpDQorew0KKyAgICBhdXRvIHRva2Vu
QTEgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQor
ICAgIGF1dG8gdG9rZW5BMiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjIiLCBOTywg
QCJ0b2tlbjIiKTsNCisgICAgYXV0byB0b2tlbkEzID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRv
a2VuKEAiMyIsIE5PLCBAInRva2VuMyIpOw0KKyAgICBhdXRvIHRva2VuQjEgPSBjcmVhdGVUZXh0
TWFuaXB1bGF0aW9uVG9rZW4oQCIxIiwgTk8sIEAidG9rZW4xIik7DQorICAgIGF1dG8gdG9rZW5C
MiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjIiLCBOTywgQCJ0b2tlbjIiKTsNCisN
CisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQTEuZ2V0KCksIHRva2Vu
QTIuZ2V0KCksIHRva2VuQTMuZ2V0KCkgXV0pOw0KKyAgICBhdXRvIGl0ZW1CID0gYWRvcHROUyhb
W19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0
b2tlbnM6QFsgdG9rZW5CMS5nZXQoKSwgdG9rZW5CMi5nZXQoKSBdXSk7DQorDQorICAgIEVYUEVD
VF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkg
aW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1B
IGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRl
bnRFcXVhbGl0eTpOT10pOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1CIGlzRXF1YWxUb1Rl
eHRNYW5pcHVsYXRpb25JdGVtOml0ZW1BLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZ
RVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQiBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9u
SXRlbTppdGVtQS5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCit9DQorDQor
VEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbUVxdWFsaXR5V2l0aERp
ZmZlcmVudFRva2VuSWRlbnRpZmllcnMpDQorew0KKyAgICBhdXRvIHRva2VuQSA9IGNyZWF0ZVRl
eHRNYW5pcHVsYXRpb25Ub2tlbihAIkEiLCBOTywgQCJ0b2tlbiIpOw0KKyAgICBhdXRvIHRva2Vu
QiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIkIiLCBOTywgQCJ0b2tlbiIpOw0KKyAg
ICBhdXRvIGl0ZW1BID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBp
bml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsgdG9rZW5BLmdldCgpIF1dKTsNCisgICAg
YXV0byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5p
dFdpdGhJZGVudGlmaWVyOkAiQSIgdG9rZW5zOkBbIHRva2VuQi5nZXQoKSBdXSk7DQorDQorICAg
IEVYUEVDVF9GQUxTRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIu
Z2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfRkFMU0Uo
W2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGlu
Z0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KK30NCisNCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFRl
eHRNYW5pcHVsYXRpb25JdGVtRXF1YWxpdHlXaXRoTmlsSWRlbnRpZmllcnMpDQorew0KKyAgICBh
dXRvIHRva2VuID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlvblRva2VuKEAiQSIsIE5PLCBAInRva2Vu
Iik7DQorICAgIGF1dG8gaXRlbUEgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
YWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpuaWwgdG9rZW5zOkBbIHRva2VuLmdldCgpIF1dKTsN
CisgICAgYXV0byBpdGVtQiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOm5pbCB0b2tlbnM6QFsgdG9rZW4uZ2V0KCkgXV0pOw0KKw0K
KyAgICBFWFBFQ1RfVFJVRShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRl
bUIuZ2V0KCkgaW5jbHVkaW5nQ29udGVudEVxdWFsaXR5OllFU10pOw0KKyAgICBFWFBFQ1RfVFJV
RShbaXRlbUEgaXNFcXVhbFRvVGV4dE1hbmlwdWxhdGlvbkl0ZW06aXRlbUIuZ2V0KCkgaW5jbHVk
aW5nQ29udGVudEVxdWFsaXR5Ok5PXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwg
VGV4dE1hbmlwdWxhdGlvbkl0ZW1FcXVhbGl0eVdpdGhEaWZmZXJlbnRUb2tlbkV4Y2x1c2lvbnMp
DQorew0KKyAgICBhdXRvIHRva2VuQSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEi
LCBOTywgQCJ0b2tlbiIpOw0KKyAgICBhdXRvIHRva2VuQiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRp
b25Ub2tlbihAIjEiLCBZRVMsIEAidG9rZW4iKTsNCisgICAgYXV0byBpdGVtQSA9IGFkb3B0TlMo
W1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiQSIg
dG9rZW5zOkBbIHRva2VuQS5nZXQoKSBdXSk7DQorICAgIGF1dG8gaXRlbUIgPSBhZG9wdE5TKFtb
X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIkEiIHRv
a2VuczpAWyB0b2tlbkIuZ2V0KCkgXV0pOw0KKw0KKyAgICBFWFBFQ1RfRkFMU0UoW2l0ZW1BIGlz
RXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRF
cXVhbGl0eTpZRVNdKTsNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFu
aXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsN
Cit9DQorDQorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBUZXh0TWFuaXB1bGF0aW9uSXRlbU5TT2Jq
ZWN0RXF1YWxpdHlXaXRoT3RoZXJJdGVtKQ0KK3sNCisgICAgYXV0byB0b2tlbkExID0gY3JlYXRl
VGV4dE1hbmlwdWxhdGlvblRva2VuKEAiMSIsIE5PLCBAInRva2VuMSIpOw0KKyAgICBhdXRvIHRv
a2VuQTIgPSBjcmVhdGVUZXh0TWFuaXB1bGF0aW9uVG9rZW4oQCIyIiwgTk8sIEAidG9rZW4yIik7
DQorICAgIGF1dG8gdG9rZW5CMSA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihAIjEiLCBO
TywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byB0b2tlbkIyID0gY3JlYXRlVGV4dE1hbmlwdWxhdGlv
blRva2VuKEAiMiIsIE5PLCBAInRva2VuMiIpOw0KKw0KKyAgICBhdXRvIGl0ZW1BID0gYWRvcHRO
UyhbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJB
IiB0b2tlbnM6QFsgdG9rZW5BMS5nZXQoKSwgdG9rZW5BMi5nZXQoKSBdXSk7DQorICAgIGF1dG8g
aXRlbUIgPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRo
SWRlbnRpZmllcjpAIkEiIHRva2VuczpAWyB0b2tlbkIxLmdldCgpLCB0b2tlbkIyLmdldCgpIF1d
KTsNCisNCisgICAgRVhQRUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25J
dGVtOml0ZW1CLmdldCgpIGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpZRVNdKTsNCisgICAgRVhQ
RUNUX1RSVUUoW2l0ZW1BIGlzRXF1YWxUb1RleHRNYW5pcHVsYXRpb25JdGVtOml0ZW1CLmdldCgp
IGluY2x1ZGluZ0NvbnRlbnRFcXVhbGl0eTpOT10pOw0KKyAgICBFWFBFQ1RfVFJVRShbaXRlbUEg
aXNFcXVhbDppdGVtQi5nZXQoKV0pOw0KKw0KKyAgICBbdG9rZW5CMiBzZXRDb250ZW50OkAic29t
ZXRoaW5nIGVsc2UiXTsNCisNCisgICAgRVhQRUNUX0ZBTFNFKFtpdGVtQSBpc0VxdWFsVG9UZXh0
TWFuaXB1bGF0aW9uSXRlbTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6WUVT
XSk7DQorICAgIEVYUEVDVF9UUlVFKFtpdGVtQSBpc0VxdWFsVG9UZXh0TWFuaXB1bGF0aW9uSXRl
bTppdGVtQi5nZXQoKSBpbmNsdWRpbmdDb250ZW50RXF1YWxpdHk6Tk9dKTsNCisgICAgRVhQRUNU
X0ZBTFNFKFtpdGVtQSBpc0VxdWFsOml0ZW1CLmdldCgpXSk7DQorfQ0KKw0KK1RFU1QoVGV4dE1h
bmlwdWxhdGlvbiwgVGV4dE1hbmlwdWxhdGlvbkl0ZW1OU09iamVjdEVxdWFsaXR5V2l0aE5vblRv
a2VuKQ0KK3sNCisgICAgYXV0byB0b2tlbiA9IGNyZWF0ZVRleHRNYW5pcHVsYXRpb25Ub2tlbihA
IjEiLCBOTywgQCJ0b2tlbjEiKTsNCisgICAgYXV0byBpdGVtID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJBIiB0b2tlbnM6QFsg
dG9rZW4uZ2V0KCkgXV0pOw0KKyAgICBOU1N0cmluZyAqc3RyaW5nID0gQCJjb250ZW50IjsNCisN
CisgICAgRVhQRUNUX0ZBTFNFKFt0b2tlbiBpc0VxdWFsOnN0cmluZ10pOw0KKyAgICBFWFBFQ1Rf
RkFMU0UoW3Rva2VuIGlzRXF1YWw6bmlsXSk7DQorfQ0KKw0KIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkNCiANCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>